diff --git a/Example/EpaperModuleTest_APM32F103/Epaper/epaper.c b/Example/EpaperModuleTest_APM32F103/Epaper/epaper.c
index 0514bfd..5120719 100644
--- a/Example/EpaperModuleTest_APM32F103/Epaper/epaper.c
+++ b/Example/EpaperModuleTest_APM32F103/Epaper/epaper.c
@@ -219,6 +219,7 @@ uint8_t epd_init(void)
if (epd_wait_busy())
return 1;
+ #if defined(EPD_29) || defined(EPD_213) || defined(EPD_154)
epd_write_reg(0x01); // Driver output control
#if defined(EPD_29) || defined(EPD_213)
epd_write_data(0x27);
@@ -262,6 +263,21 @@ uint8_t epd_init(void)
epd_write_reg(0x21); // Display update control
epd_write_data(0x00);
epd_write_data(0x80);
+ #endif
+
+ #elif defined(EPD_42)
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x40);
+ epd_write_data(0x00);
+ epd_write_reg(0x01); // Set MUX as 300
+ epd_write_data(0x2B);
+ epd_write_data(0x01);
+ epd_write_data(0x00);
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x01);
+ epd_write_reg(0x11); // data entry mode
+ epd_write_data(0x03); // X-mode
+ epd_address_set(0,0,EPD_W-1,EPD_H-1);
#endif
epd_write_reg(0x18); // Read built-in temperature sensor
@@ -289,6 +305,12 @@ uint8_t epd_init_partial(void)
}
_epd_write_data_over();
epd_cs_set();
+ #elif defined(EPD_42)
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x80);
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
#endif
return 0;
@@ -304,8 +326,13 @@ void epd_enter_deepsleepmode(uint8_t mode)
uint8_t epd_power_on(void)
{
+ #if defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xe0);
+ #else
epd_write_reg(0x22); // Display Update Control
epd_write_data(0xf8);
+ #endif
epd_write_reg(0x20); // Activate Display Update Sequence
return epd_wait_busy();
@@ -327,15 +354,20 @@ void epd_init_internalTempSensor(void)
epd_write_reg(0x1A);
epd_write_data(0x7F);
- epd_write_data(0xF0);
+// epd_write_data(0xF0);
}
void epd_update(void)
{
+
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xF4);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xF7);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xF7);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -345,10 +377,14 @@ void epd_update(void)
void epd_update_partial(void)
{
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xFC);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xFF);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xCC);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -356,6 +392,19 @@ void epd_update_partial(void)
epd_wait_busy();
}
+void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end)
+{
+ epd_write_reg(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+ epd_write_data((x_start>>3) & 0xFF);
+ epd_write_data((x_end>>3) & 0xFF);
+
+ epd_write_reg(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+ epd_write_data(y_start & 0xFF);
+ epd_write_data((y_start >> 8) & 0xFF);
+ epd_write_data(y_end & 0xFF);
+ epd_write_data((y_end >> 8) & 0xFF);
+}
+
void epd_setpos(uint16_t x, uint16_t y)
{
uint8_t _x;
@@ -365,8 +414,10 @@ void epd_setpos(uint16_t x, uint16_t y)
#ifdef EPD_154
_y = 199 - y;
- #else
+ #elif defined(EPD_29) || defined(EPD_213)
_y = 295 - y;
+ #elif defined(EPD_42)
+ _y = y;
#endif
epd_write_reg(0x4E); // set RAM x address count to 0;
@@ -387,6 +438,17 @@ void epd_writedata(uint8_t *Image1, uint32_t length)
epd_cs_set();
}
+void epd_writedata2(uint8_t data, uint32_t length)
+{
+ epd_cs_reset();
+ for (uint32_t j = 0; j < length; j++)
+ {
+ _epd_write_data(data);
+ }
+ _epd_write_data_over();
+ epd_cs_set();
+}
+
void epd_display(uint8_t *Image1, uint8_t *Image2)
{
uint32_t Width, Height, i, j;
@@ -415,6 +477,12 @@ void epd_display(uint8_t *Image1, uint8_t *Image2)
_epd_write_data_over();
epd_cs_set();
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
+
epd_update();
}
@@ -466,6 +534,11 @@ void epd_displayRED(uint8_t *Image)
epd_write_reg(0x26);
epd_writedata(Image, Width * Height);
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
epd_update();
}
diff --git a/Example/EpaperModuleTest_APM32F103/Epaper/epaper.h b/Example/EpaperModuleTest_APM32F103/Epaper/epaper.h
index ed4aa89..f51fd3a 100644
--- a/Example/EpaperModuleTest_APM32F103/Epaper/epaper.h
+++ b/Example/EpaperModuleTest_APM32F103/Epaper/epaper.h
@@ -8,11 +8,12 @@ extern "C"
#include "apm32f10x.h"
+//#define EPD_42
//#define EPD_29
//#define EPD_213
//#define EPD_154
-#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154)
+#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154) && (!defined EPD_42)
#error EPD Type Undefine
#endif
@@ -31,6 +32,10 @@ extern "C"
#define EPD_H 200
#endif
+#ifdef EPD_42
+#define EPD_W 400
+#define EPD_H 300
+#endif
#define EPD_OK 0
#define EPD_ERROR 1
@@ -76,6 +81,7 @@ extern "C"
void epd_init_internalTempSensor(void);
void epd_update(void);
void epd_update_partial(void);
+ void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end);
void epd_setpos(uint16_t x, uint16_t y);
void epd_display(uint8_t *Image1, uint8_t *Image2);
void epd_displayBW(uint8_t *Image);
diff --git a/Example/EpaperModuleTest_APM32F103/Src/main.c b/Example/EpaperModuleTest_APM32F103/Src/main.c
index 27aad2d..f971a78 100644
--- a/Example/EpaperModuleTest_APM32F103/Src/main.c
+++ b/Example/EpaperModuleTest_APM32F103/Src/main.c
@@ -52,16 +52,25 @@ int main(void)
epd_init();
#ifdef EPD_BWR
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
-
epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
epd_paint_clear(EPD_COLOR_WHITE);
epd_paint_selectimage(image_red);
epd_paint_clear(EPD_COLOR_WHITE);
+
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #endif
epd_display(image_bw, image_red);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -79,6 +88,10 @@ int main(void)
#ifdef EPD_29
epd_paint_showString(10, 0, (uint8_t *)&"2.9 Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
@@ -95,8 +108,13 @@ int main(void)
#endif
epd_display(image_bw, image_red);
+
#else
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
@@ -105,8 +123,12 @@ int main(void)
epd_paint_showPicture((EPD_H - 200) / 2,(EPD_W - 64) / 2,200,64,gImage_5,EPD_COLOR_WHITE);
#else
epd_paint_clear(EPD_COLOR_WHITE);
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
-#endif
+ #endif
+ #endif
epd_displayBW(image_bw);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -134,11 +156,15 @@ int main(void)
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
-
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
#if 1
epd_paint_showString(10,100,(uint8_t *)&"APM32F103CBT6 Example",EPD_FONT_SIZE16x8,EPD_COLOR_BLACK);
#else
- epd_paint_drawRectangle(10, 103, EPD_H - 10, 116, EPD_COLOR_BLACK, 1);
+ epd_paint_drawRectangle(10, EPD_W-20, EPD_H - 10, EPD_W-6, EPD_COLOR_BLACK, 1);
#endif
sprintf((char *)&text, ">> Partial Mode");
diff --git a/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.c b/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.c
index cc59656..3565bd2 100644
--- a/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.c
+++ b/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.c
@@ -234,54 +234,70 @@ uint8_t epd_init(void)
if (epd_wait_busy())
return 1;
- epd_write_reg(0x01); // Driver output control
- #if defined(EPD_29) || defined(EPD_213)
- epd_write_data(0x27);
- epd_write_data(0x01);
- epd_write_data(0x01);
- #else
- epd_write_data(0xC7);
- epd_write_data(0x00);
- epd_write_data(0x01);
+ #if defined(EPD_29) || defined(EPD_213) || defined(EPD_154)
+ epd_write_reg(0x01); // Driver output control
+ #if defined(EPD_29) || defined(EPD_213)
+ epd_write_data(0x27);
+ epd_write_data(0x01);
+ epd_write_data(0x01);
+ #else
+ epd_write_data(0xC7);
+ epd_write_data(0x00);
+ epd_write_data(0x01);
+ #endif
+
+ epd_write_reg(0x11); // data entry mode
+ epd_write_data(0x01);
+
+ #ifdef EPD_154
+ epd_write_reg(0x44); // set Ram-X address start/end position
+ epd_write_data(0x00);
+ epd_write_data(0x18);
+
+ epd_write_reg(0x45); // set Ram-Y address start/end position
+ epd_write_data(0xC7);
+ epd_write_data(0x00);
+ epd_write_data(0x00);
+ epd_write_data(0x00);
+ #else
+ epd_write_reg(0x44); // set Ram-X address start/end position
+ epd_write_data(0x00);
+ epd_write_data(0x0F); // 0x0F-->(15+1)*8=128
+
+ epd_write_reg(0x45); // set Ram-Y address start/end position
+ epd_write_data(0x27); // 0x127-->(295+1)=296
+ epd_write_data(0x01);
+ epd_write_data(0x00);
+ epd_write_data(0x00);
+ #endif
+
+ epd_write_reg(0x3C); // BorderWavefrom
+ epd_write_data(0x05);
+
+ #if defined(EPD_29) || defined(EPD_213)
+ epd_write_reg(0x21); // Display update control
+ epd_write_data(0x00);
+ epd_write_data(0x80);
+ #endif
+
+ #elif defined(EPD_42)
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x40);
+ epd_write_data(0x00);
+ epd_write_reg(0x01); // Set MUX as 300
+ epd_write_data(0x2B);
+ epd_write_data(0x01);
+ epd_write_data(0x00);
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x01);
+ epd_write_reg(0x11); // data entry mode
+ epd_write_data(0x03); // X-mode
+ epd_address_set(0,0,EPD_W-1,EPD_H-1);
#endif
- epd_write_reg(0x11); // data entry mode
- epd_write_data(0x01);
-
- #ifdef EPD_154
- epd_write_reg(0x44); // set Ram-X address start/end position
- epd_write_data(0x00);
- epd_write_data(0x18);
-
- epd_write_reg(0x45); // set Ram-Y address start/end position
- epd_write_data(0xC7);
- epd_write_data(0x00);
- epd_write_data(0x00);
- epd_write_data(0x00);
- #else
- epd_write_reg(0x44); // set Ram-X address start/end position
- epd_write_data(0x00);
- epd_write_data(0x0F); // 0x0F-->(15+1)*8=128
-
- epd_write_reg(0x45); // set Ram-Y address start/end position
- epd_write_data(0x27); // 0x127-->(295+1)=296
- epd_write_data(0x01);
- epd_write_data(0x00);
- epd_write_data(0x00);
- #endif
-
- epd_write_reg(0x3C); // BorderWavefrom
- epd_write_data(0x05);
-
- #if defined(EPD_29) || defined(EPD_213)
- epd_write_reg(0x21); // Display update control
- epd_write_data(0x00);
- epd_write_data(0x80);
- #endif
-
- epd_write_reg(0x18); // Read built-in temperature sensor
- epd_write_data(0x80);
-
+ epd_write_reg(0x18); // Read built-in temperature sensor
+ epd_write_data(0x80);
+
epd_setpos(0,0);
if (epd_power_on())
@@ -304,6 +320,12 @@ uint8_t epd_init_partial(void)
}
_epd_write_data_over();
epd_cs_set();
+ #elif defined(EPD_42)
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x80);
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
#endif
return 0;
@@ -319,8 +341,13 @@ void epd_enter_deepsleepmode(uint8_t mode)
uint8_t epd_power_on(void)
{
+ #if defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xe0);
+ #else
epd_write_reg(0x22); // Display Update Control
epd_write_data(0xf8);
+ #endif
epd_write_reg(0x20); // Activate Display Update Sequence
return epd_wait_busy();
@@ -342,15 +369,20 @@ void epd_init_internalTempSensor(void)
epd_write_reg(0x1A);
epd_write_data(0x7F);
- epd_write_data(0xF0);
+// epd_write_data(0xF0);
}
void epd_update(void)
{
- epd_write_reg(0x22); // Display Update Control
+
#ifdef EPD_154
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xF4);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xF7);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xF7);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -360,10 +392,14 @@ void epd_update(void)
void epd_update_partial(void)
{
- epd_write_reg(0x22); // Display Update Control
#ifdef EPD_154
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xFC);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xFF);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xCC);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -371,6 +407,19 @@ void epd_update_partial(void)
epd_wait_busy();
}
+void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end)
+{
+ epd_write_reg(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+ epd_write_data((x_start>>3) & 0xFF);
+ epd_write_data((x_end>>3) & 0xFF);
+
+ epd_write_reg(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+ epd_write_data(y_start & 0xFF);
+ epd_write_data((y_start >> 8) & 0xFF);
+ epd_write_data(y_end & 0xFF);
+ epd_write_data((y_end >> 8) & 0xFF);
+}
+
void epd_setpos(uint16_t x, uint16_t y)
{
uint8_t _x;
@@ -380,8 +429,10 @@ void epd_setpos(uint16_t x, uint16_t y)
#ifdef EPD_154
_y = 199 - y;
- #else
+ #elif defined(EPD_29) || defined(EPD_213)
_y = 295 - y;
+ #elif defined(EPD_42)
+ _y = y;
#endif
epd_write_reg(0x4E); // set RAM x address count to 0;
@@ -402,6 +453,17 @@ void epd_writedata(uint8_t *Image1, uint32_t length)
epd_cs_set();
}
+void epd_writedata2(uint8_t data, uint32_t length)
+{
+ epd_cs_reset();
+ for (uint32_t j = 0; j < length; j++)
+ {
+ _epd_write_data(data);
+ }
+ _epd_write_data_over();
+ epd_cs_set();
+}
+
void epd_display(uint8_t *Image1, uint8_t *Image2)
{
uint32_t Width, Height, i, j;
@@ -430,6 +492,12 @@ void epd_display(uint8_t *Image1, uint8_t *Image2)
_epd_write_data_over();
epd_cs_set();
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
+
epd_update();
}
@@ -481,6 +549,11 @@ void epd_displayRED(uint8_t *Image)
epd_write_reg(0x26);
epd_writedata(Image, Width * Height);
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
epd_update();
}
diff --git a/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.h b/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.h
index 0a5be53..4e87135 100644
--- a/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.h
+++ b/Example/EpaperModuleTest_AT32F403A/Epaper/epaper.h
@@ -8,11 +8,12 @@ extern "C"
#include "at32f403a_407.h"
+//#define EPD_42
//#define EPD_29
//#define EPD_213
//#define EPD_154
-#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154)
+#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154) && (!defined EPD_42)
#error EPD Type Undefine
#endif
@@ -31,6 +32,10 @@ extern "C"
#define EPD_H 200
#endif
+#ifdef EPD_42
+#define EPD_W 400
+#define EPD_H 300
+#endif
#define EPD_OK 0
#define EPD_ERROR 1
@@ -76,6 +81,7 @@ extern "C"
void epd_init_internalTempSensor(void);
void epd_update(void);
void epd_update_partial(void);
+ void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end);
void epd_setpos(uint16_t x, uint16_t y);
void epd_display(uint8_t *Image1, uint8_t *Image2);
void epd_displayBW(uint8_t *Image);
diff --git a/Example/EpaperModuleTest_AT32F403A/MDK-ARM/EpaperModuleTest_AT32F403A.uvprojx b/Example/EpaperModuleTest_AT32F403A/MDK-ARM/EpaperModuleTest_AT32F403A.uvprojx
index 208f5b1..0608784 100644
--- a/Example/EpaperModuleTest_AT32F403A/MDK-ARM/EpaperModuleTest_AT32F403A.uvprojx
+++ b/Example/EpaperModuleTest_AT32F403A/MDK-ARM/EpaperModuleTest_AT32F403A.uvprojx
@@ -10,7 +10,7 @@
Target 1
0x4
ARM-ADS
- 6190000::V6.19::ARMCLANG
+ 6210000::V6.21::ARMCLANG
1
diff --git a/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.axf b/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.axf
index bf5c4bf..bf4bbe7 100644
Binary files a/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.axf and b/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.axf differ
diff --git a/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.hex b/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.hex
index 7ff37f9..ce22728 100644
--- a/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.hex
+++ b/Example/EpaperModuleTest_AT32F403A/MDK-ARM/Objects/EpaperModuleTest_AT32F403A.hex
@@ -1,999 +1,999 @@
:020000040800F2
-:10000000882B00202502000829030008210300088E
-:1000100025030008E1020008990300080000000021
-:100020000000000000000000000000003103000894
-:10003000E5020008000000002D0300083503000859
-:100040003F0200083F0200083F0200083F0200088C
-:100050003F0200083F020008E90200083F020008D2
-:100060003F0200083F0200083F0200083F0200086C
-:100070003F0200083F0200083F0200083F0200085C
-:100080003F0200083F0200083F0200083F0200084C
-:100090003F0200083F0200083F0200083F0200083C
-:1000A0003F0200083F0200083F0200083F0200082C
-:1000B0003F0200083F0200083F0200083F0200081C
-:1000C0003F0200083F0200083F0200083F0200080C
-:1000D0003F0200083F0200083F0200083F020008FC
-:1000E0003F0200083F0200083F0200083F020008EC
-:1000F0003F0200083F0200083F0200083F020008DC
-:100100003F0200083F0200083F0200083F020008CB
-:100110003F0200083F0200083F0200083F020008BB
-:100120003F0200083F0200083F0200083F020008AB
-:100130003F0200083F0200083F0200083F0200089B
+:100000002041002059020008510500084905000858
+:100010004D05000809050008C105000800000000A2
+:10002000000000000000000000000000590500086A
+:100030000D05000800000000550500085D050008DA
+:1000400073020008730200087302000873020008BC
+:10005000730200087302000811050008730200080B
+:10006000730200087302000873020008730200089C
+:10007000730200087302000873020008730200088C
+:10008000730200087302000873020008730200087C
+:10009000730200087302000873020008730200086C
+:1000A000730200087302000873020008730200085C
+:1000B000730200087302000873020008730200084C
+:1000C000730200087302000873020008730200083C
+:1000D000730200087302000873020008730200082C
+:1000E000730200087302000873020008730200081C
+:1000F000730200087302000873020008730200080C
+:1001000073020008730200087302000873020008FB
+:1001100073020008730200087302000873020008EB
+:1001200073020008730200087302000873020008DB
+:1001300073020008730200087302000873020008CB
:1001400000000000000000000000000000000000AF
-:100150003F0200083F0200083F0200083F0200087B
-:100160003F0200083F0200083F0200083F0200086B
-:100170003F0200083F0200083F0200083F0200085B
-:100180003F02000800F002F800F03CF80AA090E8F6
-:10019000000C82448344AAF10107DA4501D100F042
-:1001A00031F8AFF2090EBAE80F0013F0010F18BFD3
-:1001B000FB1A43F00103184788470000A8470000D6
-:1001C000103A24BF78C878C1FAD8520724BF30C883
-:1001D00030C144BF04680C60704700000023002455
-:1001E00000250026103A28BF78C1FBD8520728BF47
-:1001F00030C148BF0B6070471FB501F0CFFE1FBD77
-:1002000010B510BD00F031F81146FFF7F5FF01F011
-:100210007FFC00F04FF803B4FFF7F2FF03BC00F0DF
-:1002200057F800000948804709480047FEE7FEE705
-:10023000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE796
-:1002400004480549054A064B704700003903000879
-:100250008501000888250020882B002088270020A1
-:1002600088270020704770477047754600F02CF8CB
-:10027000AE4605006946534620F00700854618B093
-:1002800020B5FFF7DDFFBDE820404FF000064FF03E
-:1002900000074FF000084FF0000BAC46ACE8C00977
-:1002A000ACE8C009ACE8C009ACE8C00921F007011E
-:1002B0008D46704710B50446AFF300802046BDE878
-:1002C0001040FFF7A8BF000000487047080000205A
-:1002D00001491820ABBEFEE726000200704700006F
-:1002E000FEE700007047000080B5052000F0D2F95D
-:1002F000012001F0E9FA40F60000C4F201000121FA
-:1003000001F0D6FB002818BF80BD40F20000C2F209
-:10031000000001780422042908BF0122027080BD78
-:10032000FEE70000FEE70000704700007047000095
-:1003300070470000704700004EF6885CCEF2000C5B
-:10034000DCF8002041F2000142F47002C4F2020124
-:10035000CCF800200A6842F001020A600A6892079D
-:10036000FCD54A6822F003024A6000BF4A6812F0D6
-:100370000C0FFBD100224A600B684FF6FF70CFF6DE
-:10038000F260184008604FF41F000A6388604FF065
-:1003900000604CF8800C7047FEE7000070B584B038
-:1003A0004FF4C0100121012500F0DCF800200021ED
-:1003B000002601F0D7FA01AC204601F07FFA40F2A6
-:1003C0000110ADF80C0020468DF80460029501F094
-:1003D00081FA032001F0A4FC06200021002201F094
-:1003E00065FC04B070BD0000B0B582B00220C0F260
-:1003F00018000121012500F0B5F86C46204601F0F7
-:10040000A7FA41F60000C0F20010CDE9005040F616
-:100410000000C4F20100214601F0EAFA02B0B0BDCA
-:1004200041F20401C4F202010A6800F00F0022F058
-:10043000F00242EA001008607047000041F2040137
-:10044000C4F202010A6800F0070022F4E06242EA06
-:10045000002008607047000041F20401C4F202016C
-:100460000A6800F0070022F4605242EAC0200860E7
-:100470007047000041F25401C4F202010A680128E9
-:1004800022F0300208BF30320A607047042888BF6B
-:100490007047DFE800F0030C19262F0041F200003E
-:1004A000C4F20200026861F300020260704741F288
-:1004B0000000C4F20200026801F0010122F480325F
-:1004C00042EA01410160704741F20000C4F20200BB
-:1004D000026801F0010122F0807242EA01610160CC
-:1004E000704741F20000C4F20200026A61F30002A8
-:1004F0000262704741F20000C4F20200426A61F3F6
-:10050000000242627047000041F20002010CC4F296
-:100510000202895800F01F0021FA00F000F00100EB
-:100520007047000041F25401C4F202010A6800F071
-:10053000030022F4405242EA003008607047000095
-:1005400041F200010020C4F2020100BF0A689203D8
-:1005500004D4B0F5405F00F10100F7D30868C0F3A0
-:100560004040704741F2000200F01F034FF0010CC1
-:10057000C4F2020201290CFA03F14FEA1040835839
-:1005800014BF23EA010119438150704780B541F23D
-:10059000040EC4F2020EDEF800C060B14CF48033E9
-:1005A000CEF80030DEF800C0012814BF4CF4003053
-:1005B0002CF4003001E02CF48030CEF80000DEF89E
-:1005C000000061F39540CEF80000DEF80000090954
-:1005D00061F35E70CEF80000DEF8000020F000400D
-:1005E00040EAC270CEF8000080BD000041F2000079
-:1005F000C4F20200016841F001010160016889074D
-:10060000FCD5416821F00301416000BF416811F051
-:100610000C0FFBD10021416002684FF6FF73CFF64B
-:10062000F2631A40026001634FF41F01816070475A
-:1006300041F20401C4F202010A6860F301020A6097
-:100640007047000041F20400C4F202000068C0F3E9
-:100650008100704780B5042001F094FC40F2040052
-:10066000C2F2000000684DF68361C4F21B31A0FBAA
-:100670000101880C40F28401C2F2000108600868A0
-:100680004FF47A71484340F28001C2F200010860E1
-:1006900080BD000080B5002808BF80BD4EF210016B
-:1006A00040F2800ECEF20001C2F2000E4FF0320C8A
-:1006B000002300BF82B2332A06D3DEF8002032388E
-:1006C00002FB0CF24A6004E0DEF800005043486090
-:1006D00000208B600A6842F001020A600A6802F09A
-:1006E0000112012AFAD00A6822F001020A6002040B
-:1006F0008B60DFD180BD00002DE9F04381B08946D9
-:10070000074640F6004800200021C4F2010800F02E
-:10071000D7FF40464FF4804101F016F940464FF4B0
-:10072000805101F011F9A8F554463046242101F01A
-:1007300019FB00BF3046802101F016FB0028F9D1DB
-:1007400040464FF4805101F001F940464FF480419A
-:1007500001F0FCF840464FF4805101F0F5F8002517
-:100760007C5D00BF3046022101F0FEFA0028F9D07E
-:100770003046214601F0F6FA0135B5F5945FEFD128
-:100780003046802101F0F0FA0028F9D140464FF4BC
-:10079000805101F0DBF80020002100F091FF40467D
-:1007A0004FF4804101F0D0F840464FF4805101F001
-:1007B000CBF83046262101F0D5FA00BF3046802123
-:1007C00001F0D2FA0028F9D140464FF4805101F0EF
-:1007D000BDF840464FF4804101F0B8F840464FF470
-:1007E000805101F0B1F8002419F80450304602217C
-:1007F00001F0BAFA0028F9D085F0FF01304601F087
-:10080000B1FA0134B4F5945FEED100BF30468021D7
-:1008100001F0AAFA0028F9D140464FF4805101F0C6
-:1008200095F801B0BDE8F04300F0D6BF70B540F6D2
-:1008300000440546C4F2010400F05AFE20464FF47D
-:10084000804101F081F820464FF4805101F07CF89E
-:10085000A4F554463046102101F084FA3046802138
-:1008600001F082FA0028F9D120464FF4805101F0BE
-:100870006DF820464FF4804101F068F820464FF4AF
-:10088000805101F061F83046294601F06BFA00BF53
-:100890003046802101F068FA0028F9D120464FF453
-:1008A000805101F053F840F27C00C2F200000021B8
-:1008B000017070BDF0B581B040F27C06C2F2000656
-:1008C000307840F60044C4F2010498B9A4F580657C
-:1008D00028464FF4807101F037F83220FFF7DAFE36
-:1008E00028464FF4807101F031F83220FFF7D2FE34
-:1008F00001203070A4F5806630464FF4007101F09D
-:10090000D7F870B149F641450120013D00F044821D
-:10091000FFF7C0FE30464FF4007101F0C9F800281F
-:10092000F2D120464FF4804101F00EF820464FF4FA
-:10093000805101F009F8A4F554452846122101F030
-:1009400011FA00BF2846802101F00EFA0028F9D1E3
-:1009500020464FF4805100F0F9FF20464FF48041CB
-:1009600000F0F4FF0A20FFF795FE30464FF40071C7
-:1009700001F09EF878B149F6414700BF0120013FE0
-:1009800000F00A82FFF786FE30464FF4007101F056
-:100990008FF80028F2D120464FF4804100F0D4FFB8
-:1009A00020464FF4805100F0CFFF2846012101F08E
-:1009B000D9F900BF2846802101F0D6F90028F9D1E5
-:1009C00020464FF4805100F0C1FF20464FF4804193
-:1009D00000F0BCFF20464FF4805100F0B5FF2846E0
-:1009E000272101F0BFF900BF2846802101F0BCF9A2
-:1009F0000028F9D120464FF4805100F0A7FF20468F
-:100A00004FF4805100F0A0FF2846012101F0AAF91F
-:100A10002846802101F0A8F90028F9D120464FF49A
-:100A2000805100F093FF20464FF4805100F08CFF7E
-:100A30002846012101F096F92846802101F094F919
-:100A40000028F9D120464FF4805100F07FFF204666
-:100A50004FF4804100F078FF20464FF4805100F0C1
-:100A600073FF2846112101F07DF900BF284680213F
-:100A700001F07AF90028F9D120464FF4805100F0B6
-:100A800065FF20464FF4804100F060FF20464FF4A0
-:100A9000805100F059FF2846012101F063F900BFA1
-:100AA0002846802101F060F90028F9D120464FF452
-:100AB000805100F04BFF20464FF4804100F044FF8E
-:100AC00020464FF4805100F03FFF2846442101F0BA
-:100AD00049F900BF2846802101F046F90028F9D1E4
-:100AE00020464FF4805100F031FF20464FF4804102
-:100AF00000F02CFF20464FF4805100F025FF2846DF
-:100B0000002101F02FF900BF2846802101F02CF9C7
-:100B10000028F9D120464FF4805100F017FF2046FD
-:100B20004FF4805100F010FF28460F2101F01AF910
-:100B30002846802101F018F90028F9D120464FF409
-:100B4000805100F003FF20464FF4804100F0FCFE8E
-:100B500020464FF4805100F0F7FE2846452101F071
-:100B600001F900BF2846802101F0FEF80028F9D1E4
-:100B700020464FF4805100F0E9FE20464FF48041BA
-:100B800000F0E4FE20464FF4805100F0DDFE2846E0
-:100B9000272101F0E7F800BF2846802101F0E4F8A2
-:100BA0000028F9D120464FF4805100F0CFFE2046B6
-:100BB0004FF4805100F0C8FE2846012101F0D2F820
-:100BC0002846802101F0D0F80028F9D120464FF4C2
-:100BD000805100F0BBFE20464FF4805100F0B4FE7F
-:100BE0002846002101F0BEF82846802101F0BCF81B
-:100BF0000028F9D120464FF4805100F0A7FE20468E
-:100C00004FF4805100F0A0FE2846002101F0AAF820
-:100C10002846802101F0A8F80028F9D120464FF499
-:100C2000805100F093FE20464FF4804100F08CFE8E
-:100C300020464FF4805100F087FE28463C2101F009
-:100C400091F800BF2846802101F08EF80028F9D1E4
-:100C500020464FF4805100F079FE20464FF4804149
-:100C600000F074FE20464FF4805100F06DFE2846DF
-:100C7000052101F077F800BF2846802101F074F8C3
-:100C80000028F9D120464FF4805100F05FFE204645
-:100C90004FF4804100F058FE20464FF4805100F0A0
-:100CA00053FE2846212101F05DF800BF284680212F
-:100CB00001F05AF80028F9D120464FF4805100F095
-:100CC00045FE20464FF4804100F040FE20464FF4A0
-:100CD000805100F039FE2846002101F043F800BFA2
-:100CE0002846802101F040F80028F9D120464FF431
-:100CF000805100F02BFE20464FF4805100F024FE7E
-:100D00002846802101F02EF82846802101F02CF899
-:100D10000028F9D120464FF4805100F017FE2046FC
-:100D20004FF4804100F010FE20464FF4805100F057
-:100D30000BFE2846182101F015F800BF2846802137
-:100D400001F012F80028F9D120464FF4805100F04C
-:100D5000FDFD20464FF4804100F0F8FD20464FF4A1
-:100D6000805100F0F1FD2846802100F0FBFF00BF1C
-:100D70002846802100F0F8FF0028F9D120464FF4E2
-:100D8000805100F0E3FD0020002100F099FC00F00C
-:100D900023FC002818BF012001B0F0BD2DE9F0416F
-:100DA00084B00224C0F2180420460121FFF7DAFBC8
-:100DB000601C0121FFF7D6FB02AD284600F0C8FDFC
-:100DC00040F60044C4F20104A4F5806630464FF4B6
-:100DD00080714FF4807700F0B7FD40F20040C0F220
-:100DE0001010CDE902703046294600F001FE1820AF
-:100DF000ADF80D004FF4007002903046294600F027
-:100E0000F7FD20464FF480414FF4804600F09EFDF0
-:100E10004FF010084FF48067204629468DF80E8069
-:100E2000ADF80C70029600F0E3FD4FF40050082678
-:100E3000029020462946ADF80C708DF80E6000F047
-:100E4000D7FD4FF400400290204629468DF80E60F1
-:100E500000F0CEFD20464FF480514FF4805600F054
-:100E600075FD204629468DF80E80ADF80C7002966F
-:100E700000F0BEFD0E20C0F21C000121FFF772FB46
-:100E80006D46284600F05CFF40F20310C0F20500FA
-:100E9000009040F20010C0F20110A4F554440190FB
-:100EA0002046294600F066FF2046012100F050FF51
-:100EB00004B0BDE8F081000080B540F2680CC2F2D9
-:100EC000000CBCF81210002908BF80BD4FF0000EC6
-:100ED00006E000BFBCF812100EF1010E8E4512D2D2
-:100EE000BCF81030002BF5D04FF0FF31DCF80020BB
-:100EF0000EFB03220A445070BCF810308A1C0131EA
-:100F00009A42F3D3E6E780BD2DE9F04F86B0B2EB0D
-:100F1000000C0D46924648BFCCF1000C5F1B4FF011
-:100F2000FF314FF6FF7248BF7F424FF0FF368245D8
-:100F300088BF0121029119460193AB4288BF012667
-:100F400040F26809A2F18003C7F1000B0096ACEBF8
-:100F50000706C2F200090FFA83FE0397691E049583
-:100F6000059102E0BCEB460F4CDAB9F80E30A0F167
-:100F70000108B32B0CDC9BB15A2B38D1B9F80830DF
-:100F8000B9F80A700499A3EB00087B1A17E000BFB8
-:100F9000B42B0FD0B3F5877F059B10D027E000BF9F
-:100FA0005146B9F808A0049A4346AAEB02088A46BB
-:100FB00005E000BFB9F80A30DDF814801B1AB9F853
-:100FC00010209BB21FFA88F75A43D9F8003002EB81
-:100FD000D7029F5C08F007058021E9400F9C394348
-:100FE0004EFA05F5002C08BF07EA05019954BBEB42
-:100FF000460FB7DC81B251450ED00399761A02999B
-:101000000844AFE70499019A89B2914204D0049D43
-:10101000009966440D44A1E706B0BDE8F08F0000DA
-:101020002DE9F04182B00F46DDE908811C461546E6
-:10103000064681B1A7420BD2B9B230462A460B46CA
-:10104000CDF80080FFF760FF0137B8B2A042F3D3BC
-:1010500002B0BDE8F081304639462A463B46CDF81D
-:101060000080FFF751FF3046394632462346CDF81F
-:101070000080FFF749FF284621462A463B46CDF827
-:101080000080FFF741FF2846214632462346CDF82F
-:101090000080FFF739FF02B0BDE8F08110B540F2E3
-:1010A000680EDDF808C0C2F2000ECEF80000C808D5
-:1010B000AEF80810AEF80A20AEF80CC04FF0010CE4
-:1010C0004C0718BF0CEBD100AEF81000AEF80E3094
-:1010D000B3FA83F0B43BB3FA83F340095B091843D6
-:1010E0000846AEF812201CBF10460A46AEF80400AF
-:1010F000AEF8062010BD000040F26801C2F2000107
-:10110000086070472DE9F04F8BB00130069080B237
-:101110000590C01AB0F5947F00F3EF80082B02D140
-:1011200006276FB9E9E0D8085F074FF0010618BF3E
-:1011300006EBD3005F08784387B2002F00F0DD8014
-:10114000A2F1200085B25808039041F6B67005EB75
-:101150004502C0F6000000EB4200049042F25260EB
-:1011600040F26806C0F60000DDF818E001314FF6E5
-:101170007F7B00240192C2F20006802200EB051062
-:1011800002950090CDE9077312E000BF05991FFAA0
-:101190008EF0401A03998842069808BF864609993E
-:1011A00008BF083107980A9C0134844200F0A580EA
-:1011B000082B0A9402D1049818E000BF182B0AD01B
-:1011C000102B12D00C2B40F09880019842F2DE13C5
-:1011D000C0F6000306E0029842F6424300EBC0006E
-:1011E000C0F6000303EB800000E00098204490F874
-:1011F0000090AEF101084FF0000C099124E07089D5
-:10120000A0EB0E00348A80B21FFA8AF36043346880
-:1012100000EBD303E018E35C0AF007050FFA8BF745
-:1012200022FA05F447FA05F51C4303EA0507149B67
-:10123000002B08BF274607704FEA59090131BCF15E
-:10124000070F0CF1010C4FD2F0895FEAC974A1F1CC
-:10125000010A0BD1B32815DC20B35A28ECD1308910
-:101260007389A0EB0E0A581ACCE700BFB32811DC33
-:10127000E8B15A28E0D130897489A0EB0E0A601ACF
-:101280001DE000BFB428BAD0B0F5877F5046C246F3
-:10129000B8D0D1E7B4280FD0B0F5877F5046C2460A
-:1012A0000DD0C9E73089A0EB010A4046AAE7308992
-:1012B000A0EB010A404602E07089A0EB0E00378ADD
-:1012C00080B21FFA8AF47843376800EBD4043819E7
-:1012D0003C5D0AF007030FFA8BF522FA03F745FA93
-:1012E00003F327431C40A2E7089B0EF1010E082BD5
-:1012F0007FF44CAF0798099955E70BB0BDE8F08F24
-:101300002DE9F04F89B0DE085F0705924FF001022A
-:1013100018BF02EBD306002E009600F0BB80013010
-:10132000DDF84C904E1C81B240F268070391002515
-:10133000C2F200074FF0800C0024314604900AE00E
-:101340000599019C029D0C4431460135009BAAB2CF
-:101350009A4280F09F80059A002AF6D000230295D9
-:10136000019413E00130039A81B2891A059A069C10
-:101370009142049908BF0846089E08BF0836079B9B
-:101380000134013399B291423146D9D2CDE90643B5
-:10139000129BA2B213F80280A0F1010B4FF0000AD9
-:1013A000089623E07A89121A3C8A92B21FFA8EF3C9
-:1013B00062433C6802EBD302A518A35C4FF67F742E
-:1013C0000EF0070624B22CFA06F244FA06F61A4387
-:1013D0003340B9F1000F08BF1A462A704FEA580887
-:1013E0000131BAF1070F0AF1010ABBD2FD895FEAA8
-:1013F000C872A1F1010E0BD1B32D15DC25B35A2D06
-:10140000ECD13A897B89A2EB000E5A1ACCE700BFD7
-:10141000B32D11DCEDB15A2DE0D13A897B89A2EBD5
-:10142000000E5A1A1CE000BFB42DBBD0B5F5877F63
-:101430007246DE46B8D0D1E7B42D0FD0B5F5877F20
-:101440007246DE460CD0C9E73A89A2EB010E5A4635
-:10145000AAE73A89A2EB010E5A4601E07A89121AEC
-:101460003D8A92B21FFA8EF36A434C46D7F8009039
-:1014700002EBD3024FF67F7609EB020519F8022042
-:10148000A1460EF0070436B22CFA04F326411343AA
-:1014900032409EE709B0BDE8F08F00002DE9F0472B
-:1014A00082B01C461378FBB1DDF828804FEA540A5D
-:1014B0000D460646CAF59479571C06E05644B0B26C
-:1014C000814511DB17F8013B73B1B0B2DAB229469E
-:1014D0002346CDF80080FFF715FE082CEED1063626
-:1014E000B0B2B0F5917FEDD902B0BDE8F087000051
-:1014F000B0B540F60044C4F2010420464FF48041E8
-:1015000000F022FA20464FF4805100F01DFAA4F5B5
-:1015100054452846222100F025FC00BF28468021A2
-:1015200000F022FC0028F9D120464FF4805100F051
-:101530000DFA20464FF4804100F008FA20464FF49F
-:10154000805100F001FA2846832100F00BFC00BF17
-:101550002846802100F008FC0028F9D120464FF4ED
-:10156000805100F0F3F920464FF4804100F0ECF98F
-:1015700020464FF4805100F0E7F92846202100F082
-:10158000F1FB00BF2846802100F0EEFB0028F9D1D6
-:1015900020464FF4805100F0D9F920464FF48041A5
-:1015A00000F0D4F9A4F5806420464FF4007100F0F7
-:1015B0007FFA70B149F641450120013D08BFB0BD39
-:1015C000FFF768F820464FF4007100F071FA002828
-:1015D000F2D10020B0BD0000B0B540F60044C4F226
-:1015E000010420464FF4804100F0AEF920464FF44C
-:1015F000805100F0A9F9A4F554452846222100F0B5
-:10160000B1FB00BF2846802100F0AEFB0028F9D1D5
-:1016100020464FF4805100F099F920464FF4804164
-:1016200000F094F920464FF4805100F08DF92846DF
-:10163000F82100F097FB00BF2846802100F094FBC2
-:101640000028F9D120464FF4805100F07FF9204660
-:101650004FF4804100F078F920464FF4805100F0BB
-:1016600073F92846202100F07DFB00BF2846802129
-:1016700000F07AFB0028F9D120464FF4805100F0A9
-:1016800065F920464FF4804100F060F9A4F58064CC
-:1016900020464FF4007100F00BFA70B149F6414555
-:1016A0000120013D08BFB0BDFEF7F4FF20464FF416
-:1016B000007100F0FDF90028F2D10020B0BD00005B
-:1016C000F0B581B040F60044C4F201040E46C708EC
-:1016D00020464FF4804100F037F920464FF4805106
-:1016E00000F032F9A4F5544528464E2100F03AFBAB
-:1016F0002846802100F038FB0028F9D120464FF41D
-:10170000805100F023F920464FF4804100F01EF98B
-:1017100020464FF4805100F017F9F9B2284600F046
-:1017200021FB00BF2846802100F01EFB0028F9D1D4
-:1017300020464FF4805100F009F920464FF48041D3
-:1017400000F002F920464FF4805100F0FDF82846E1
-:101750004F2100F007FB00BF2846802100F004FB6A
-:101760000028F9D140F22710861B20464FF4805103
-:1017700000F0ECF820464FF4804100F0E7F82046F6
-:101780004FF4805100F0E0F8F1B2284600F0EAFA98
-:101790002846802100F0E8FA0028F9D120464FF4CD
-:1017A000805100F0D3F820464FF4805100F0CCF87F
-:1017B000C6F30021284600F0D5FA00BF2846802154
-:1017C00000F0D2FA0028F9D120464FF4805101B040
-:1017D000BDE8F04000F0BAB8B0B540F60044C4F23D
-:1017E000010420464FF4804100F0AEF820464FF44B
-:1017F000805100F0A9F8A4F554452846222100F0B4
-:10180000B1FA00BF2846802100F0AEFA0028F9D1D5
-:1018100020464FF4805100F099F820464FF4804163
-:1018200000F094F820464FF4805100F08DF82846DF
-:10183000F72100F097FA00BF2846802100F094FAC3
-:101840000028F9D120464FF4805100F07FF820465F
-:101850004FF4804100F078F820464FF4805100F0BA
-:1018600073F82846202100F07DFA00BF2846802129
-:1018700000F07AFA0028F9D120464FF4805100F0A8
-:1018800065F820464FF4804100F060F8A4F58064CC
-:1018900020464FF4007100F00BF970B149F6414554
-:1018A000013D08BFB0BD0120FEF7F4FE20464FF415
-:1018B000007100F0FDF80028F2D1B0BD00214160B8
-:1018C000012101810170704740F21441C4F201010D
-:1018D0000860704740F20841C4F20101426851F8C3
-:1018E000083C934341F8083C51F8043C934341F8C9
-:1018F000043C437A002B08BF704703786FEA020C60
-:101900002BB151F8043C134341F8043C04E051F876
-:10191000083C134341F8083C0B6803EA0C030B60D6
-:101920004B6803EA0C034B60007A012807D018B912
-:1019300008681043086070470868104308604868EA
-:101940001043486070470000416170470161704773
-:1019500040F200424FF6FF71C0F20012C0E90012DF
-:101960007047000080B58B08032B88BF80BD0C2218
-:1019700002EA810E4FF00F0C02EB83010CFA0EF21B
-:10198000DFE803F002290F1C0821C4F201010B68F3
-:1019900000FA0EF023EA02020A600A6810430860A7
-:1019A00080BD0821C4F201018B6800FA0EF023EA21
-:1019B00002028A608A681043886080BD0821C4F2F0
-:1019C0000101CB6800FA0EF023EA0202CA60CA687D
-:1019D0001043C86080BD0821C4F201014B6800FAC1
-:1019E0000EF023EA02024A604A681043486080BD54
-:1019F000B0B58B790A88032B0BD07BB9497928299C
-:101A000001F00F0E18D0182908BF0261110616D177
-:101A10002EE04FF0000E110611D129E003F0080C62
-:101A20000B79C97903F00403634401F0030103EB6C
-:101A3000010E110603D11BE04261110618D00023EC
-:101A40004FF00F0C002104E00131082903F10403D9
-:101A50000ED022FA01F4E407F6D004680CFA03F57C
-:101A6000AC43046004680EFA03F52C430460EBE712
-:101A7000B2F5807F38BFB0BD120A00234FF00F0CC3
-:101A8000002104E00131082903F104030ED022FAF9
-:101A900001F4E407F6D044680CFA03F5AC43446063
-:101AA00044680EFA03F52C434460EBE7B0BD000038
-:101AB00080680840401AB0FA80F040097047000082
-:101AC00010B582B00420C0F218000121FEF74AFDD3
-:101AD0006C462046FFF73CFF40F20040C0F2101079
-:101AE00001904FF40050009041F20000C4F2010058
-:101AF0002146FFF77DFF02B010BD000041F20C004F
-:101B0000C4F20100016881F40051016070470000D7
-:101B100088B000F0A5F9FEF79DFDFEF765FCFEF725
-:101B20003DFCFFF7CDFFFFF739F9FEF7C3FE40F2AA
-:101B30008804C2F20004FF26204680214FF49472EC
-:101B4000B4230096FFF7AAFA41F20835C2F2000565
-:101B5000284680214FF49472B4230096FFF79EFA32
-:101B60002046FFF7C9FAFF20FFF7A6F92846FFF73E
-:101B7000C3FAFF20FFF7A0F943F69E10C0F600005D
-:101B8000009017200321FA227A230196FFF7B8FB71
-:101B900020462946FEF7B0FD01200126FEF746FE4D
-:101BA0004FF4FA50FEF776FDFEF784FE2046FFF76D
-:101BB000A3FAFF20FFF780F9002729A20A200021BD
-:101BC00018230097FFF76AFC2AA20A20322110236B
-:101BD0000097FFF763FC2EA20A201D211023009717
-:101BE000FFF75CFC2846FFF787FAFF20FFF764F950
-:101BF00046F26C40C0F22E00069045F22070C7F20B
-:101C00006F20059046F66540C6F66C70049043F66A
-:101C10003E60C4F62000039003AA0A20472118233F
-:101C20000097FFF73BFC0A2067214FF48F72742363
-:101C300000970196FFF7F4F920462946FEF75CFD70
-:101C40000120FEF7F3FD40F20004C2F20004642517
-:101C5000FFF754FF20786843FEF71CFDF8E700BF4C
-:101C6000322E3920457061706572204D6F64756C3D
-:101C70006500000077697468203239362078203199
-:101C80003238207265736F6C7574696F6E00000076
-:101C900044657369676E65642042792057654163C6
-:101CA000742053747564696F00000000B0B54EF67F
-:101CB0000C5ECEF2000EDEF800304FF0FF35C3F3BD
-:101CC000022383F00704042C28BF0424033B05FAF5
-:101CD00004F438BF0023A143994005FA03F39A4363
-:101CE00000F00F03043B4EF2001C7344CEF2000CD4
-:101CF00011430C33B0F1FF3F4FEA011100EB0C022E
-:101D0000C8BF02F540730028197048BFB0BD00F08D
-:101D10001F01012202FA01F140094CF82010B0BD68
-:101D20004EF60C51CEF200010A684FF6FF031A403E
-:101D300060F30A2242F0806040F0FD700860704756
-:101D40000021C0F8031001600121C171704700003B
-:101D5000026801F0010122F0400242EA81110160B3
-:101D600070470000C16070478068084018BF0120BC
-:101D700070470000C26922F40062C2610A78032A37
-:101D800027D8DFE802F00206121A026822F40042A5
-:101D90000EE0026822F400420260026822F48042EF
-:101DA0000260026842F4806212E0026842F400427B
-:101DB0000260026822F4804206E0026842F40042B7
-:101DC0000260026842F480420260026822F480628B
-:101DD0000260CA79036802F0010223F4007343EA47
-:101DE000422202604A78012A06D1CA79012A03D127
-:101DF000026842F4807202E0026822F4807202609B
-:101E00004A78036862F3820303608A784368072A8A
-:101E100023F4807388BF03F5807343608A78036876
-:101E200062F3C5030360CA78036802F0010223F07D
-:101E3000800343EAC21202600A79036802F00102D9
-:101E400023F4006343EAC22202604A79036862F322
-:101E5000410303608979026861F300020260704700
-:101E600080B5FEF7C3FB01200121FEF70FFB00BF89
-:101E7000FEF766FB0028FBD002203B210122FEF783
-:101E800085FB0020FEF74EFB02200121FEF7FEFA43
-:101E90001920FEF739FB0128FAD10020FEF7C0FA1D
-:101EA0000420FEF7D9FA0420FEF7C8FA0120FEF755
-:101EB000E1FA0220FEF7BCFBFEF7C4FB0228FBD1CF
-:101EC0000020FEF7D7FABDE8804000F001B800001E
-:101ED000B0B541F2040441F20025C4F20204C0F29C
-:101EE0007A05FEF7AFFB02280BD0A0BB206D800562
-:101EF00031D5E06A800144BF46F60045C0F2DC25DA
-:101F000029E0D4F800C021682268C1F38341C2F3FC
-:101F100041721301581C0F29034618BF0223002ADF
-:101F200018BF03465FEACC3003EB010006D440F64D
-:101F30000011C0F23D0100FB01F50CE021688903AE
-:101F400001D4454307E0216DC1F301310231B5FBF6
-:101F5000F1F101FB00F540F20400C2F2000005605F
-:101F6000216804A2C1F30311515C026822FA01F155
-:101F70000160B0BD00000000000000000102030489
-:101F8000060708094EF21001CEF200010A68042883
-:101F900022F0040208BF04320A607047F1EE100A12
-:101FA0004FF6FF71C0F2C03120EA010040F04070EE
-:101FB000E1EE100A70470000000000000000002F52
-:101FC000000000000700070000147F147F140024A5
-:101FD0002A7F2A12006264081323003649552250D2
-:101FE00000000503000000001C2241000000412207
-:101FF0001C000014083E08140008083E08080000F1
-:1020000000A06000000808080808000060600000E8
-:10201000002010080402003E5149453E0000427F66
-:102020004000004261514946002141454B310018B2
-:1020300014127F10002745454539003C4A49493074
-:10204000000171090503003649494936000649492E
-:10205000291E000036360000000056360000000839
-:102060001422410000141414141400004122140816
-:1020700000020151090600324959513E007C1211FB
-:10208000127C007F49494936003E41414122007F90
-:102090004141221C007F49494941007F090909014A
-:1020A000003E4149497A007F0808087F0000417FCF
-:1020B0004100002040413F01007F08142241007F81
-:1020C00040404040007F020C027F007F0408107FE8
-:1020D000003E4141413E007F09090906003E415151
-:1020E000215E007F0919294600464949493100010E
-:1020F000017F0101003F4040403F001F2040201F62
-:10210000003F4038403F0063140814630007087024
-:10211000080700615149454300007F4141000055D7
-:102120002A552A55000041417F00000402010204A3
-:102130000040404040400000010204000020545490
-:102140005478007F484444380038444444200038E0
-:102150004444487F00385454541800087E09010252
-:102160000018A4A4A47C007F080404780000447D27
-:102170004000004080847D00007F10284400000063
-:10218000417F4000007C04180478007C0804047837
-:1021900000384444443800FC242424180018242423
-:1021A00018FC007C0804040800485454542000041F
-:1021B0003F444020003C4040207C001C2040201C2C
-:1021C000003C4030403C004428102844001CA0A0A3
-:1021D000A07C004464544C441414141414140000DF
-:1021E000000000000000000000000000FC000000F3
-:1021F000000002000000000C020C020000000000C1
-:10220000000090D0BCD0BC90000300030000182454
-:10221000FE448C000302070201001824D8B04C8051
-:10222000000300010201C038E438E00001020201AD
-:10223000020208060000000000000000000000008C
-:1022400000F80402000000010204000204F800008B
-:102250000004020100009060F8609000000001009E
-:1022600000002020FC2020000000010000000000F1
-:1022700000000000080600000000202020202000B0
-:10228000000000000000000000000000000200004C
-:1022900000000080601C0200040300000000F8043D
-:1022A0000404F8000102020201000008FC00000022
-:1022B00000020302000018844424180003020202F2
-:1022C000020008042424D80001020202010040B0E8
-:1022D00088FC80000000000302003C242424C40089
-:1022E000010202020100F824242CC00001020202B3
-:1022F00001000C04E41C0400000003000000D824CA
-:102300002424D80001020202010038444444F800A9
-:1023100000030202010000001000000000000200A3
-:102320000000000020000000000006000000002067
-:1023300050880402000000000102909090909000EC
-:10234000000000000000000204885020000201008C
-:1023500000001804C4241800000002000000F80463
-:10236000E494F80001020202020000E09CF0800008
-:1023700002030000030204FC2424D800020302022A
-:102380000100F80404040C0001020202010004FC34
-:102390000404F80002030202010004FC24740C008F
-:1023A00002030202030004FC24740C000203020076
-:1023B0000000F0080444CC4000010202010004FCCB
-:1023C0002020FC040203000003020404FC040400B7
-:1023D000020203020200000404FC040406040403D5
-:1023E000000004FC24D00C0402030200030204FCDD
-:1023F00004000000020302020203FC3CC03CFC009B
-:1024000003000300030004FC30C4FC0402030200C8
-:102410000300F8040404F80001020202010004FCB5
-:1024200024241800020302000000F8848404F80049
-:1024300001020207050004FC246498000203020064
-:102440000302182424448C000302020201000C043D
-:10245000FC040C0000020302000004FC0000FC0469
-:10246000000102020100047C80E01C040000030063
-:1024700000001CE03CE01C00000300030000049C82
-:10248000609C0400020300030200041CE01C040022
-:102490000002030200000C84641C04000203020218
-:1024A00003000000FE020200000007040400000E0A
-:1024B00030C00000000000010200000202FE000027
-:1024C00000040407000000040204000000000000F3
-:1024D00000000000000000000808080808080000CC
-:1024E000020000000000000000000040A0A0C000AA
-:1024F00000010202030204FC2020C00000030202CB
-:10250000010000C02020600000010202020000C0A3
-:102510002024FC0000010202030200C0A0A0C000B1
-:102520000001020202000020F82424040002030239
-:1025300002000040A0A0602000070A0A0A0404FC70
-:102540002020C0000203020003020020E40000007B
-:10255000000203020000000020E400000808080751
-:10256000000004FC80E020200203020003020404B7
-:10257000FC000000020203020200E020E020C00094
-:1025800003000300030020E02020C000020302003B
-:10259000030200C02020C00000010202010020E070
-:1025A0002020C000080F0A02010000C02020E00027
-:1025B0000001020A0F0820E0402020000203020070
-:1025C00000000060A0A02000000202020300002022
-:1025D000F820000000000102020020E00020E000DE
-:1025E00000010202030220E02080602000000301BD
-:1025F00000006080E08060000003000300002060B5
-:102600008060200002030003020020E020806020A0
-:102610000808070100000020A0602000000203025B
-:102620000200000020DE020000000007040000009D
-:1026300000FF00000000000F00000002DE2000008C
-:102640000004070000000201020404020000000070
-:10265000000000000000000000000000000000007A
-:102660000000000000F8000000000000003330000F
-:10267000000000100C06100C060000000000000016
-:10268000000040C07840C0784000043F04043F048C
-:102690000400007088FC08300000001820FF211E94
-:1026A0000000F008F000E018000000211C031E21CB
-:1026B0001E0000F00888700000001E212324192746
-:1026C000211010160E0000000000000000000000A5
-:1026D0000000000000E018040200000000071820BD
-:1026E000400000020418E00000000040201807002D
-:1026F0000000404080F0804040000202010F0102D3
-:102700000200000000F0000000000101011F0101B3
-:102710000100000000000000000080B07000000018
-:1027200000000000000000000000000101010101A4
-:102730000101000000000000000000303000000037
-:10274000000000000000806018040060180601000E
-:10275000000000E010080810E000000F102020101A
-:102760000F00001010F8000000000020203F202083
-:10277000000000700808088870000030282422211A
-:1027800030000030088888483000001820202011D0
-:102790000E000000C02010F8000000070424243FB1
-:1027A000240000F80888880808000019212020115A
-:1027B0000E0000E0108888180000000F1120201182
-:1027C0000E0000380808C83808000000003F00006C
-:1027D00000000070880808887000001C2221212257
-:1027E0001C0000E010080810E00000003122221157
-:1027F0000F00000000C0C0000000000000303000EA
-:102800000000000000800000000000008060000068
-:1028100000000000804020100800000102040810A1
-:1028200020004040404040404000040404040404B0
-:10283000040000081020408000000020100804025E
-:102840000100007048080808F00000000030360160
-:102850000000C030C828E810E0000718272423141F
-:102860000B000000C038E0000000203C23020227DB
-:10287000382008F8888888700000203F2020201128
-:102880000E00C03008080808380007182020201063
-:10289000080008F808080810E000203F2020201059
-:1028A0000F0008F88888E8081000203F2020232027
-:1028B000180008F88888E8081000203F200003006E
-:1028C0000000C03008080838000007182020221E29
-:1028D000020008F808000008F808203F2101012143
-:1028E0003F20000808F8080800000020203F2020B2
-:1028F000000000000808F8080800C08080807F0001
-:10290000000008F888C028180800203F2001263859
-:10291000200008F8080000000000203F20202020B0
-:10292000300008F8F800F8F80800203F003F003FAA
-:10293000200008F830C00008F808203F20000718E1
-:102940003F00E01008080810E0000F1020202010C1
-:102950000F0008F808080808F000203F21010101D5
-:102960000000E01008080810E0000F182424385078
-:102970004F0008F8888888887000203F2000030CEA
-:1029800030200070880808083800003820212122F3
-:102990001C00180808F8080818000000203F200054
-:1029A000000008F808000008F808001F2020202078
-:1029B0001F000878880000C83808000007380E019A
-:1029C0000000F80800F80008F800033C0700073C86
-:1029D0000300081868808068180820302C03032C36
-:1029E00030200838C800C83808000000203F200008
-:1029F000000010080808C8380800203826212020C8
-:102A00001800000000FE020202000000007F4040AB
-:102A10004000000C30C0000000000000000106383B
-:102A2000C00000020202FE000000004040407F00A3
-:102A30000000000004020202040000000000000088
-:102A40000000000000000000000080808080808086
-:102A5000808000020204000000000000000000006E
-:102A600000000000808080800000001924222222C3
-:102A70003F2008F8008080000000003F1120201156
-:102A80000E000000008080800000000E1120202039
-:102A90001100000000808088F800000E1120201036
-:102AA0003F200000808080800000001F2222222220
-:102AB0001300008080F0888888180020203F2020A4
-:102AC00000000000808080808000006B94949493CC
-:102AD000600008F8008080800000203F2100002076
-:102AE0003F2000809898000000000020203F202018
-:102AF0000000000000809898000000C08080807F67
-:102B0000000008F8000080808000203F24022D3063
-:102B10002000000808F8000000000020203F2020CE
-:102B200000008080808080808000203F20003F2047
-:102B3000003F8080008080800000203F2100002036
-:102B40003F200000808080800000001F2020202087
-:102B50001F00808000808000000080FFA1202011E5
-:102B60000E000000008080808000000E112020A058
-:102B7000FF80808080008080800020203F21200016
-:102B80000100000080808080800000332424242401
-:102B90001900008080E0808000000000001F2020DD
-:102BA00000008080000000808000001F2020201096
-:102BB0003F20808080000080808000010E30080669
-:102BC000010080800080008080800F300C030C307A
-:102BD0000F0000808000808080000020312E0E31A8
-:102BE0002000808080000080808080818E701806A8
-:102BF000010000808080808080000021302C222114
-:102C0000300000000000807C020200000000003F55
-:102C1000404000000000FF00000000000000FF0036
-:102C200000000002027C800000000040403F0000E5
-:102C30000000000601010202040400000000000080
-:102C40000000000000000000000000000000000084
-:102C50000000000000000000000000000000000074
-:102C60000000000000000000000000F0F0F0000094
-:102C700000000000000000017F01000000000000D3
-:102C80000000001C1C1C0000000000008060301CC4
-:102C90008C60301C0C0000000000000000000000F0
-:102CA0000000000000000000000000000000000024
-:102CB00000E00000000000E000000086E69F86863D
-:102CC0008686E69F860000011F01010101011F01A8
-:102CD0000100000080C06020F820E0C0000000007B
-:102CE00003070C18FF70E18100000000070F1010AF
-:102CF0007F100F0700008060206080000000E0204F
-:102D000000000F3020309F70DC371030C000000012
-:102D1000100E03000718101807000000C02020E064
-:102D2000C0000000000080E01F38E88703C43C04B6
-:102D30000000070F1810100B070D1010080000807E
-:102D40008C4C380000000000000000000000000073
-:102D50000000000000000000000000000000000073
-:102D6000000000000000000080E0300804000000C7
-:102D7000000000FEFF010000000000000000000055
-:102D8000030F1820400000040830E080000000001D
-:102D900000000000000001FFFE00000000000040F5
-:102DA00020180F03000000000000000000000000D9
-:102DB000C00000000000004266663C18FF183C6638
-:102DC0006642000000000000030000000000000058
-:102DD0000000000080000000000000101010101023
-:102DE000FF10101010100000000000000300000091
-:102DF00000000000000000000000000000000000D3
-:102E00000000000000000000000000808C4C380032
-:102E100000000000000000000000000000000000B2
-:102E20000000001010101010101010101000000002
-:102E30000000000000000000000000000000000092
-:102E40000000000000000000000000000000000082
-:102E5000000000001C1C1C0000000000000000001E
-:102E6000000000000000E0380C000000000080704E
-:102E70001C03000000000060380E0100000000008C
-:102E80000000000080C060202060C080000000FEC4
-:102E9000FF010000000001FFFE000001070E1810F6
-:102EA00010180E0701000000808080C0E0000000C4
-:102EB00000000000000000FFFF0000000000000014
-:102EC0001010101F1F101010000000804020202044
-:102ED0002060C080000000030300804020381F07EE
-:102EE0000000001C1A1918181818181F000000807C
-:102EF000C020202060C080000000000303001010EC
-:102F0000182FE780000000070F10101010180F078F
-:102F10000000000000000000C0E0F000000000C061
-:102F2000B088868180FFFF808000000000000010D4
-:102F3000101F1F1010000000E060606060606060A3
-:102F4000000000003F1008080818F0E0000000072B
-:102F50000B101010101C0F030000000080C0402058
-:102F60002020E0C0000000FCFF211008080818F035
-:102F7000E0000001070C18101010080F03000000FB
-:102F8000C0E06060606060E060000000030000007E
-:102F9000E0180700000000000000001F1F000000F4
-:102FA00000000080C0602020202060C080000087DA
-:102FB000EF2C1818303068CF830000070F0810106E
-:102FC0001010180F07000000C0C020202020C08073
-:102FD0000000001F3F604040402010FFFE00000046
-:102FE0000C1C101010080F0300000000000000006F
-:102FF00000000000000000000000000E0E0E0000A7
-:10300000000000000000001C1C1C0000000000006C
-:103010000000000000000000000000000000000CA4
-:103020000C00000000000000000000583800000004
-:1030300000000000000000000080402010000000A0
-:103040001028448201000000000000000000000081
-:103050000102040810000000000000000000000051
-:103060000000008484848484848484848400000038
-:103070000000000000000000000000001020408060
-:103080000000000000000000000000000182442851
-:10309000100000001008040201000000000000C041
-:1030A00020201010101030E0C0000003030000F0DA
-:1030B00010080C070300000000001C1C1C0000008E
-:1030C0000000000000C0406020202040C00000FC44
-:1030D000FF01F00E03C1FE03807F0001070E0811FF
-:1030E0001110110904020000000080E0E00000005F
-:1030F00000000000807C4340477FF88000001018EB
-:103100001F1000000000131F1C1020E0E0202020F2
-:103110002060C080000000FFFF10101010182FE783
-:103120008000101F1F1010101010180F0700000053
-:1031300080C0402020202060E00000FCFF01000053
-:103140000000000001000001070E18101010080414
-:10315000030020E0E02020202040C080000000FF8D
-:10316000FF000000000001FFFE00101F1F101010E4
-:1031700018080E07010020E0E02020202020206019
-:10318000800000FFFF101010107C00000000101FD6
-:103190001F10101010101018060020E0E020202052
-:1031A00020206060800000FFFF101010107C0000E5
-:1031B0000100101F1F1000000000000000000000B0
-:1031C00080C06020202040E0000000FCFF010000E3
-:1031D0004040C0C140400001070E181010100F0FF2
-:1031E000000020E0E0200000000020E0E02000FFE0
-:1031F000FF101010101010FFFF00101F1F10000014
-:103200000000101F1F100000202020E0E0202020E0
-:1032100000000000000000FFFF00000000000000B0
-:103220001010101F1F1010100000000000002020C0
-:1032300020E0E020202000000000000000FFFF0050
-:1032400000000060E0808080C07F3F00000020E040
-:10325000E020000020A06020200000FFFF30187C4C
-:10326000E3C000000000101F1F10000001131F1C0E
-:10327000181020E0E020000000000000000000FF27
-:10328000FF000000000000000000101F1F101010C1
-:1032900010101018060020E0E0E000000000E0E060
-:1032A000E02000FF013FFEC0E01E01FFFF00101FF5
-:1032B0001000031F0300101F1F1020E0E0C00000DB
-:1032C00000000020E02000FF0003071C78E08000E1
-:1032D000FF00101F100000000000030F1F0000007F
-:1032E00080C060202060C080000000FEFF01000060
-:1032F000000000FFFE000001070E181010180C0758
-:10330000010020E0E0202020202060C0800000FF9D
-:10331000FF2020202020301F0F00101F1F10000052
-:10332000000000000000000080C060202060C0801D
-:10333000000000FEFF010000000000FFFE00000191
-:10334000070E1111133C7C67210020E0E0202020B3
-:10335000202060C0800000FFFF101030F0D0080F68
-:103360000700101F1F10000000030F1C101000802A
-:10337000C060202020204040E00000070F0C1818FB
-:10338000303060E08100001F0C0810101010180F82
-:1033900007008060202020E0E020202060800100E5
-:1033A000000000FFFF000000000100000000101FEF
-:1033B0001F100000000020E0E020000000000020BE
-:1033C000E02000FFFF00000000000000FF000007F9
-:1033D0000F1810101010100807002060E0E0200007
-:1033E000000020E060200000077FF88000807C0360
-:1033F000000000000000071F1C070000000020E084
-:10340000E02000E0E0200020E0200007FFF8E01FBF
-:10341000FFFCE01F00000000031F0300011F03006A
-:103420000000002060E0A0000020E060200000001C
-:1034300000038F7CF8C6010000000010181E130066
-:1034400001171F1810002060E0E02000000020E0BD
-:103450006020000001073EF8E018070000000000AF
-:103460000010101F1F10100000000080602020209E
-:1034700020A0E0E0200000000000C0F03E0F0300AC
-:10348000000000101C1F171010101018060000007C
-:10349000000000FC0404040404000000000000FF1D
-:1034A00000000000000000000000007F404040409D
-:1034B0004000000010E000000000000000000000DC
-:1034C0000000031C608000000000000000000000FD
-:1034D00000030C70800000000404040404FC0000DD
-:1034E000000000000000000000FF000000000000DD
-:1034F00040404040407F0000000000000010080CE9
-:10350000040C081000000000000000000000000093
-:1035100000000000000000000000000000000000AB
-:10352000000000000000000000000000000000009B
-:10353000000000000000808080808080808080808B
-:103540008080000000040408080000000000000063
-:10355000000000000000000000000000000000006B
-:10356000000000000000000000000000000000005B
-:103570000000000098D844642424FCF80000000FE8
-:103580001F18101010081F1F10180020E0F0000076
-:103590000000000000000000FFFF180804040CF801
-:1035A000F00000001F0F18101010180F030000008B
-:1035B0000000000000000000000000E0F818040413
-:1035C000043C3800000000030F0C10101010080617
-:1035D00000000000000000000020E0F0000000E01B
-:1035E000F81C04040408FFFF000000030F1810106B
-:1035F00010081F0F0800000000000000000000007D
-:1036000000000000E0F8484444444C78700000009A
-:10361000030F0C181010100804000000000080C0F8
-:10362000602020E0C00000040404FFFF0404040440
-:103630000000000010101F1F1010100000000000FC
-:1036400000000000000000000000000070F88C0482
-:10365000048CF874040C007076CF8D8D8D89C87839
-:1036600070000020E0F000000000000000000000FA
-:10367000FFFF08040404FCF8000000101F1F1000E6
-:1036800000101F1F1000000000000060600000001C
-:1036900000000000040404FCFC0000000000000026
-:1036A0001010101F1F10101000000000000000007C
-:1036B00000606000000000000000040404FCFC0046
-:1036C00000000000C0C08080C07F3F0000000020DC
-:1036D000E0F000000000000000000000FFFF80C0DC
-:1036E000F41C0404000000101F1F1100031F1C1015
-:1036F00010000000202020E0F0000000000000008A
-:10370000000000FFFF000000000000001010101F6C
-:103710001F1010100000000000000000000000005A
-:10372000000004FCFC0804FCFC0804FCFC00101F66
-:103730001F10001F1F10001F1F10000000000000BE
-:103740000000000000000004FCFC08080404FCF871
-:10375000000000101F1F100000101F1F10000000AD
-:103760000000000000000000000000E0F0180C0461
-:10377000040C18F0E00000030F0C101010100C0FD8
-:103780000300000000000000000000000000000432
-:10379000FCFC080404040CF8F0000080FFFF889093
-:1037A00010101C0F030000000000000000000000CB
-:1037B000000000E0F81C04040408F8FC000000030A
-:1037C0000F1810109088FFFF80000000000000001C
-:1037D000000000000000040404FCFC100804040CB9
-:1037E0000C001010101F1F1010100000000000002F
-:1037F0000000000000000000000000003078CCC491
-:103800008484840C1C0000001E1810101011190F65
-:1038100006000000000000C00000000000000004DE
-:103820000404FFFF040404000000000000000F1F58
-:103830001010100C0000000000000000000000004C
-:1038400000000004FCFE00000004FCFE000000007C
-:103850000F1F181010081F0F0800000000000000C4
-:1038600000000000000000040C3CFCC40000C43C4C
-:103870000C0400000000010F1E0E010000000000FB
-:1038800000000000000000000000043CFCC400E454
-:103890007CFC84807C040000071F070000071F07D2
-:1038A0000000000000000000000000000000000414
-:1038B000041C7CE4C0341C0404000010101C16011D
-:1038C000131F1C1810000000000000000000000082
-:1038D000000000040C3CFCC400C43C0404000000D4
-:1038E000C080C1370E010000000000000000000091
-:1038F00000000000000000001C0404C4F47C1C0450
-:1039000000000000101C1F17111010180E000000FE
-:103910000000000000F80C0400000000000000108F
-:1039200028EF00000000000000000000003F6040A1
-:103930000000000000000000FF0000000000000088
-:1039400000000000FF000000000000000000000078
-:10395000FF00000000000000040CF8000000000060
-:10396000000000000000EF28100000000000000030
-:1039700040603F0000000000000000180602020442
-:1039800008102020300800000000000000000000A7
-:103990000000000000000000000000000000000027
-:1039A0000000000000000000000000000000000017
+:1001500073020008730200087302000873020008AB
+:10016000730200087302000873020008730200089B
+:10017000730200087302000873020008730200088B
+:100180007302000800F002F800F057F814A696E891
+:10019000000CB244B344DA4501D100F04EF8BAE89D
+:1001A0000F000FA696E83000A5EB040504EB060748
+:1001B000AAEB0704A7F101074FEA15154FEA34141B
+:1001C000A4F10104AC4201D300F037F813F0010FA1
+:1001D00018BFFB1A43F0010300F001F8DBE71847F2
+:1001E000004C0000204C0000103A24BF78C878C1B1
+:1001F000FAD8520724BF30C830C144BF04680C602D
+:1002000070470000704700000023002400250026EE
+:10021000103A28BF78C1FBD8520728BF30C148BF69
+:100220000B607047642900F07F80002070471FB585
+:1002300002F004F91FBD10B510BD00F02AF91146F7
+:10024000FFF7F5FF01F074FE00F048F903B4FFF783
+:10025000F2FF03BC00F050F9094880470948004705
+:10026000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE766
+:10027000FEE7FEE704480549054A064B70470000C3
+:100280006105000885010008203B00202041002076
+:10029000203D0020203D00200FB41CB5074B06AACE
+:1002A0007B4469460090059800F0DBF80020694621
+:1002B00000F0EAF81CBC5DF814FB0000E50100004A
+:1002C0002DE9F0410E460446002020622046E168F8
+:1002D000884730B3252805D0D4E901219047206A0A
+:1002E000401CF2E7E168204600278847050018D047
+:1002F000A5F14100192802D820354FF40067324695
+:10030000294620462760FFF78DFF40B1012804D021
+:10031000F61D26F007060836D8E7361DD6E728462C
+:10032000DAE7206ABDE8F0812DE9F04106460024B5
+:1003300010687529314616A510D0AFF3008000284B
+:1003400002DA404213A507E031688A0701D512A5F9
+:1003500002E0490704D511A5012401E0AFF30080B4
+:1003600000210A2206F1240709E0B0FBF2FCB0FBF1
+:10037000F2F302FB1C00303078541846491C002868
+:10038000F3D123462A463046BDE8F04100F00BB8D1
+:10039000000000002D0000002B00000020000000E5
+:1003A0007047704770472DE9F0470D4699469246D1
+:1003B000044600F124080168880604D5E06921F0AC
+:1003C0001001216000E00120A84201DD471B00E090
+:1003D0000027A1697A1902EB0900081AA0612078A8
+:1003E000C00602D42046AFF30080002608E0D4E91E
+:1003F00001211AF806009047206A401C761C2062F2
+:100400004E45F4DB2078C0060AD52046AFF30080C5
+:1004100006E0D4E9012130209047206A401C206288
+:10042000381EA7F10107F4DC07E0D4E9012118F830
+:1004300005009047206A401C2062281EA5F1010596
+:10044000F3DC2046AFF300802078000602D50220BE
+:10045000BDE8F0870120FBE701694A1C02610878CA
+:10046000704700B58FB0CDE90131002105910549F4
+:100470007944CDE9031011466846FFF721FF0FB01C
+:1004800000BD0000E5FFFFFF0A6802F8010B0A60EB
+:100490007047754600F02CF8AE4605006946534695
+:1004A00020F00700854618B020B5FFF7E3FEBDE851
+:1004B00020404FF000064FF000074FF000084FF0CB
+:1004C000000BAC46ACE8C009ACE8C009ACE8C00918
+:1004D000ACE8C00921F007018D46704710B504460D
+:1004E000AFF300802046BDE81040FFF7AFBE00002C
+:1004F000004870470800002001491820ABBEFEE705
+:100500002600020070470000FEE700007047000070
+:1005100080B5052000F0D2F9012001F0DDFB40F6A6
+:100520000000C4F20100012101F0D2FC002818BF34
+:1005300080BD40F20000C2F20000017804220429CC
+:1005400008BF0122027080BDFEE70000FEE7000048
+:1005500070470000704700007047000070470000BF
+:100560004EF6885CCEF2000CDCF8002041F200016F
+:1005700042F47002C4F20201CCF800200A6842F092
+:1005800001020A600A689207FCD54A6822F0030259
+:100590004A6000BF4A6812F00C0FFBD100224A608B
+:1005A0000B684FF6FF70CFF6F260184008604FF40A
+:1005B0001F000A6388604FF000604CF8800C7047A1
+:1005C000FEE7000070B584B04FF4C0100121012592
+:1005D00000F0DCF800200021002601F0CBFB01AC8C
+:1005E000204601F073FB40F20110ADF80C002046EC
+:1005F0008DF80460029501F075FB032001F0E0FD29
+:1006000006200021002201F0A1FD04B070BD000011
+:10061000B0B582B00220C0F218000121012500F01F
+:10062000B5F86C46204601F09BFB41F60000C0F295
+:100630000010CDE9005040F60000C4F20100214650
+:1006400001F0E6FB02B0B0BD41F20401C4F20201C8
+:100650000A6800F00F0022F0F00242EA0010086081
+:100660007047000041F20401C4F202010A6800F080
+:10067000070022F4E06242EA0020086070470000B0
+:1006800041F20401C4F202010A6800F0070022F4FA
+:10069000605242EAC02008607047000041F25401F5
+:1006A000C4F202010A68012822F0300208BF303289
+:1006B0000A607047042888BF7047DFE800F0030C29
+:1006C00019262F0041F20000C4F20200026861F313
+:1006D00000020260704741F20000C4F202000268AA
+:1006E00001F0010122F4803242EA014101607047C9
+:1006F00041F20000C4F20200026801F0010122F0A0
+:10070000807242EA01610160704741F20000C4F268
+:100710000200026A61F300020262704741F20000C7
+:10072000C4F20200426A61F30002426270470000B4
+:1007300041F20002010CC4F20202895800F01F00CD
+:1007400021FA00F000F001007047000041F254016E
+:10075000C4F202010A6800F0030022F4405242EAA7
+:10076000003008607047000041F200010020C4F230
+:10077000020100BF0A68920304D4B0F5405F00F1A3
+:100780000100F7D30868C0F34040704741F200020F
+:1007900000F01F034FF0010CC4F2020201290CFA11
+:1007A00003F14FEA1040835814BF23EA01011943B3
+:1007B0008150704780B541F2040EC4F2020EDEF89B
+:1007C00000C060B14CF48033CEF80030DEF800C0D9
+:1007D000012814BF4CF400302CF4003001E02CF45C
+:1007E0008030CEF80000DEF8000061F39540CEF8CE
+:1007F0000000DEF80000090961F35E70CEF8000029
+:10080000DEF8000020F0004040EAC270CEF80000A0
+:1008100080BD000041F20000C4F20200016841F016
+:100820000101016001688907FCD5416821F00301DD
+:10083000416000BF416811F00C0FFBD10021416005
+:1008400002684FF6FF73CFF6F2631A40026001634D
+:100850004FF41F018160704741F20401C4F20201AC
+:100860000A6860F301020A607047000041F2040068
+:10087000C4F202000068C0F38100704780B5042014
+:1008800001F0D0FD40F20400C2F2000000684DF615
+:100890008361C4F21B31A0FB0101880C40F284018A
+:1008A000C2F20001086008684FF47A71484340F2D0
+:1008B0008001C2F20001086080BD0000002808BF6E
+:1008C000704780B54EF2100140F2800ECEF200016A
+:1008D000C2F2000E4FF0320C002300BF82B2332A66
+:1008E00006D3DEF80020323802FB0CF24A6004E046
+:1008F000DEF800005043486000208B600A6842F038
+:1009000001020A600A6802F00112012AFAD00A689C
+:1009100022F001020A6002048B60DFD1BDE8804052
+:10092000704700002DE9F04381B040F60044C4F266
+:1009300001048946074620464FF4804198461646F2
+:1009400001F00AFA20464FF4805101F005FAA4F5AF
+:1009500054452846442101F055FC00BF284680211B
+:1009600001F052FC0028F9D120464FF4805101F0EB
+:10097000F5F920464FF4804101F0F0F920464FF49C
+:10098000805101F0E9F9C7F3C701284601F03AFCAC
+:100990002846802101F038FC0028F9D120464FF488
+:1009A000805101F0DBF920464FF4805101F0D4F979
+:1009B000C6F3C701284601F025FC00BF2846802168
+:1009C00001F022FC0028F9D120464FF4805101F0BB
+:1009D000C5F920464FF4804101F0BEF920464FF49E
+:1009E000805101F0B9F92846452101F00BFC00BF08
+:1009F0002846802101F008FC0028F9D120464FF458
+:100A0000805101F0ABF920464FF4804101F0A6F986
+:100A100020464FF4805101F09FF95FFA89F1284692
+:100A200001F0F0FB2846802101F0EEFB0028F9D10F
+:100A300020464FF4805101F091F920464FF4805147
+:100A40004FEA192601F088F92846314601F0DAFB11
+:100A50002846802101F0D8FB0028F9D120464FF428
+:100A6000805101F07BF920464FF4805101F074F978
+:100A70005FFA88F1284601F0C5FB00BF28468021B7
+:100A800001F0C2FB0028F9D120464FF4805101F05B
+:100A900065F920464FF480514FEA182601F05CF9C1
+:100AA0002846314601F0AEFB2846802101F0ACFB20
+:100AB0000028F9D120464FF4805101B0BDE8F04341
+:100AC00001F04CB92DE9F04381B0814640F6004871
+:100AD00000200021C4F2010800F08AFF40464FF4D4
+:100AE000804101F039F940464FF4805101F034F96A
+:100AF000A8F554463046262101F084FB304680217B
+:100B000001F082FB0028F9D140464FF4805101F0FA
+:100B100025F940464FF4804101F020F940464FF45A
+:100B2000805101F019F9002443F6982519F8047052
+:100B30003046022101F068FB0028F9D030463946E2
+:100B400001F060FB0134AC42F0D100BF304680219F
+:100B500001F05AFB0028F9D140464FF4805101F0D2
+:100B6000FDF80020002100F043FF40464FF4804193
+:100B700001F0F2F840464FF4805101F0EDF83046B4
+:100B8000242101F03FFB00BF3046802101F03CFBF7
+:100B90000028F9D140464FF4805101F0DFF840467B
+:100BA0004FF4804101F0DAF840464FF4805101F0F3
+:100BB000D3F8002443F6982519F804703046022132
+:100BC00001F022FB0028F9D03046394601F01AFB2B
+:100BD0000134AC42F0D100BF3046802101F014FB5B
+:100BE0000028F9D140464FF4805101F0B7F801B028
+:100BF000BDE8F04300F086BF2DE9F04381B08146A7
+:100C000040F6004800200021C4F2010800F0F0FE88
+:100C100040464FF4804101F09FF840464FF4805128
+:100C200001F09AF8A8F554463046242101F0EAFA7A
+:100C30003046802101F0E8FA0028F9D140464FF40F
+:100C4000805101F08BF840464FF4804101F086F866
+:100C500040464FF4805101F07FF8002443F6982578
+:100C600019F804703046022101F0CEFA0028F9D0BC
+:100C70003046394601F0C6FA0134AC42F0D100BF2B
+:100C80003046802101F0C0FA0028F9D140464FF4E7
+:100C9000805101F063F800F0A7FF0020002100F070
+:100CA000A7FE40464FF4804101F056F840464FF40D
+:100CB000805101F051F83046262101F0A3FA00BF1F
+:100CC0003046802101F0A0FA0028F9D140464FF4C7
+:100CD000805101F043F840464FF4804101F03EF866
+:100CE00040464FF4805101F037F8002443F6982530
+:100CF00019F804703046022101F086FA0028F9D074
+:100D00003046394601F07EFA0134AC42F0D100BFE2
+:100D10003046802101F078FA0028F9D140464FF49E
+:100D2000805101B0BDE8F04301F018B870B540F64D
+:100D300000440546C4F2010400F072FD20464FF461
+:100D4000804101F009F820464FF4805101F004F889
+:100D5000A4F554463046102101F054FA3046802163
+:100D600001F052FA0028F9D120464FF4805100F0EA
+:100D7000F5FF20464FF4804100F0F0FF20464FF48D
+:100D8000805100F0E9FF3046294601F03BFA00BFF0
+:100D90003046802101F038FA0028F9D120464FF47E
+:100DA000805100F0DBFF40F27C00C2F20000002125
+:100DB000017070BDF0B581B040F27C06C2F2000651
+:100DC000307840F60044C4F2010498B9A4F5806577
+:100DD00028464FF4807100F0BFFF3220FFF76EFD10
+:100DE00028464FF4807100F0B9FF3220FFF766FD0E
+:100DF00001203070A4F5806630464FF4007101F098
+:100E000067F870B149F64145013D00F09581012038
+:100E1000FFF754FD30464FF4007101F059F80028F7
+:100E2000F2D120464FF4804100F096FF20464FF467
+:100E3000805100F091FFA4F554452846122101F09D
+:100E4000E1F900BF2846802101F0DEF90028F9D140
+:100E500020464FF4805100F081FF20464FF480413E
+:100E600000F07CFF0A20FFF729FD30464FF40071A7
+:100E700001F02EF878B149F6414700BF013F00F07C
+:100E80005B810120FFF71AFD30464FF4007101F03D
+:100E90001FF80028F2D120464FF4804100F05CFF9B
+:100EA00020464FF4805100F057FF2846212101F0E1
+:100EB000A9F900BF2846802101F0A6F90028F9D140
+:100EC00020464FF4805100F049FF20464FF4804106
+:100ED00000F044FF20464FF4805100F03DFF2846CB
+:100EE000402101F08FF900BF2846802101F08CF9E4
+:100EF0000028F9D120464FF4805100F02FFF204602
+:100F00004FF4805100F028FF2846002101F07AF9C3
+:100F10002846802101F078F90028F9D120464FF4C5
+:100F2000805100F01BFF20464FF4804100F014FF79
+:100F300020464FF4805100F00FFF2846012101F0B8
+:100F400061F900BF2846802101F05EF90028F9D13F
+:100F500020464FF4805100F001FF20464FF48041BD
+:100F600000F0FCFE20464FF4805100F0F5FE2846CC
+:100F70002B2101F047F900BF2846802101F044F9F8
+:100F80000028F9D120464FF4805100F0E7FE2046BA
+:100F90004FF4805100F0E0FE2846012101F032F9C3
+:100FA0002846802101F030F90028F9D120464FF47D
+:100FB000805100F0D3FE20464FF4805100F0CCFE6B
+:100FC0002846002101F01EF92846802101F01CF975
+:100FD0000028F9D120464FF4805100F0BFFE204692
+:100FE0004FF4804100F0B8FE20464FF4805100F0ED
+:100FF000B3FE28463C2101F005F900BF28468021B8
+:1010000001F002F90028F9D120464FF4805100F098
+:10101000A5FE20464FF4804100F0A0FE20464FF48C
+:10102000805100F099FE2846012101F0EBF800BF45
+:101030002846802101F0E8F80028F9D120464FF435
+:10104000805100F08BFE20464FF4804100F084FE7A
+:1010500020464FF4805100F07FFE2846112101F018
+:10106000D1F800BF2846802101F0CEF80028F9D140
+:1010700020464FF4805100F071FE20464FF480412D
+:1010800000F06CFE20464FF4805100F065FE2846CB
+:10109000032101F0B7F800BF2846802101F0B4F821
+:1010A0000028F9D120464FF4805100F057FE00206F
+:1010B000002140F28F1240F22B13FFF733FC204641
+:1010C0004FF4804100F048FE20464FF4805100F07C
+:1010D00043FE2846182101F095F800BF28468021DC
+:1010E00001F092F80028F9D120464FF4805100F029
+:1010F00035FE20464FF4804100F030FE20464FF48C
+:10110000805100F029FE2846802101F07BF800BFC5
+:101110002846802101F078F80028F9D120464FF4C4
+:10112000805100F01BFE0020002100F061FC01B0A6
+:10113000BDE8F04000F0E8BB012001B0F0BD0000C8
+:10114000B0B5FFF737FE00281CBF0120B0BD40F648
+:101150000044C4F2010420464FF4804100F0FCFD3D
+:1011600020464FF4805100F0F7FDA4F55445284681
+:101170003C2101F047F800BF2846802101F044F8E7
+:101180000028F9D120464FF4805100F0E7FD2046B9
+:101190004FF4804100F0E2FD20464FF4805100F012
+:1011A000DBFD2846802101F02DF800BF2846802174
+:1011B00001F02AF80028F9D120464FF4805100F0C0
+:1011C000CDFD20464FF4804100F0C6FD20464FF48F
+:1011D000805100F0C1FD2846212101F013F800BF25
+:1011E0002846802101F010F80028F9D120464FF45C
+:1011F000805100F0B3FD20464FF4804100F0AEFD79
+:1012000020464FF4805100F0A7FD2846002100F051
+:10121000F9FF00BF2846802100F0F6FF0028F9D131
+:1012200020464FF4805100F099FD20464FF4805144
+:1012300000F092FD2846002100F0E4FF28468021BE
+:1012400000F0E2FF0028F9D120464FF4805100F071
+:1012500085FD0020B0BD00002DE9F04184B00224DE
+:10126000C0F2180420460121FFF790FA601C01210A
+:10127000FFF78CFA02AD284600F072FD40F60044FC
+:10128000C4F20104A4F5806630464FF480714FF437
+:10129000807700F061FD40F20040C0F21010CDE90F
+:1012A00002703046294600F0B3FD1820ADF80D005D
+:1012B0004FF4007002903046294600F0A9FD204608
+:1012C0004FF480414FF4804600F048FD4FF0100885
+:1012D0004FF48067204629468DF80E80ADF80C70DB
+:1012E000029600F095FD4FF400500826029020462B
+:1012F0002946ADF80C708DF80E6000F089FD4FF4B2
+:1013000000400290204629468DF80E6000F080FDD6
+:1013100020464FF480514FF4805600F01FFD2046C8
+:1013200029468DF80E80ADF80C70029600F070FD25
+:101330000E20C0F21C000121FFF728FA6D46284656
+:1013400000F04EFF40F20310C0F20500009040F2A2
+:101350000010C0F20110A4F5544401902046294623
+:1013600000F058FF2046012100F042FF04B0BDE824
+:10137000F081000040F2680CC2F2000CBCF81210C0
+:10138000002908BF704780B54FF0000E06E000BF8F
+:10139000BCF812100EF1010E8E4513D2BCF81030BD
+:1013A000002BF5D04FF0FF31DCF800209BB20EFB94
+:1013B00003220A445070BCF810308A1C01319A4252
+:1013C000F2D3E5E7BDE880407047000010B540F279
+:1013D000680EDDF808C0C2F2000ECEF80000C808A2
+:1013E000AEF80810AEF80A20AEF80CC04FF0010CB1
+:1013F0004C0718BF0CEBD100AEF81000AEF80E3061
+:10140000B3FA83F0B43BB3FA83F340095B091843A2
+:101410000846AEF812201CBF10460A46AEF804007B
+:10142000AEF8062010BD000040F26801C2F20001D3
+:10143000086070472DE9F04F8BB00130069080B204
+:101440000590C01AB0F5967F00F3EF80082B02D10B
+:1014500006276FB9E9E0D8085F074FF0010618BF0B
+:1014600006EBD3005F08784387B2002F00F0DD80E1
+:10147000A2F1200085B25808039042F2564005EBD5
+:101480004502C0F6000000EB4200049042F6F22054
+:1014900040F26806C0F60000DDF818E001314FF6B2
+:1014A0007F7B00240192C2F20006802200EB05102F
+:1014B00002950090CDE9077312E000BF05991FFA6D
+:1014C0008EF0401A03998842069808BF864609990B
+:1014D00008BF083107980A9C0134844200F0A580B7
+:1014E000082B0A9402D1049818E000BF182B0AD0E8
+:1014F000102B12D00C2B40F09880019842F27E63A2
+:10150000C0F6000306E0029843F2E20300EBC000DD
+:10151000C0F6000303EB800000E00098204490F840
+:101520000090AEF101084FF0000C099124E07089A1
+:10153000A0EB0E00348A80B21FFA8AF3604334684D
+:1015400000EBD303E018E35C0AF007050FFA8BF712
+:1015500022FA05F447FA05F51C4303EA0507149B34
+:10156000002B08BF274607704FEA59090131BCF12B
+:10157000070F0CF1010C4FD2F0895FEAC974A1F199
+:10158000010A0BD1B32815DC20B35A28ECD13089DD
+:101590007389A0EB0E0A581ACCE700BFB32811DC00
+:1015A000E8B15A28E0D130897489A0EB0E0A601A9C
+:1015B0001DE000BFB428BAD0B0F5877F5046C246C0
+:1015C000B8D0D1E7B4280FD0B0F5877F5046C246D7
+:1015D0000DD0C9E73089A0EB010A4046AAE730895F
+:1015E000A0EB010A404602E07089A0EB0E00378AAA
+:1015F00080B21FFA8AF47843376800EBD4043819B4
+:101600003C5D0AF007030FFA8BF522FA03F745FA5F
+:1016100003F327431C40A2E7089B0EF1010E082BA1
+:101620007FF44CAF0798099955E70BB0BDE8F08FF0
+:101630002DE9F04F89B0DE085F0705924FF00102F7
+:1016400018BF02EBD306002E009600F0BB800130DD
+:10165000DDF84C904E1C81B240F2680703910025E2
+:10166000C2F200074FF0800C0024314604900AE0DB
+:101670000599019C029D0C4431460135009BAAB29C
+:101680009A4280F09F80059A002AF6D000230295A6
+:10169000019413E00130039A81B2891A059A069CDD
+:1016A0009142049908BF0846089E08BF0836079B68
+:1016B0000134013399B291423146D9D2CDE9064382
+:1016C000129BA2B213F80280A0F1010B4FF0000AA6
+:1016D000089623E07A89121A3C8A92B21FFA8EF396
+:1016E00062433C6802EBD302A518A35C4FF67F74FB
+:1016F0000EF0070624B22CFA06F244FA06F61A4354
+:101700003340B9F1000F08BF1A462A704FEA580853
+:101710000131BAF1070F0AF1010ABBD2FD895FEA74
+:10172000C872A1F1010E0BD1B32D15DC25B35A2DD2
+:10173000ECD13A897B89A2EB000E5A1ACCE700BFA4
+:10174000B32D11DCEDB15A2DE0D13A897B89A2EBA2
+:10175000000E5A1A1CE000BFB42DBBD0B5F5877F30
+:101760007246DE46B8D0D1E7B42D0FD0B5F5877FED
+:101770007246DE460CD0C9E73A89A2EB010E5A4602
+:10178000AAE73A89A2EB010E5A4601E07A89121AB9
+:101790003D8A92B21FFA8EF36A434C46D7F8009006
+:1017A00002EBD3024FF67F7609EB020519F802200F
+:1017B000A1460EF0070436B22CFA04F32641134377
+:1017C00032409EE709B0BDE8F08F00002DE9F047F8
+:1017D00082B01C461378FBB1DDF828804FEA540A2A
+:1017E0000D460646CAF59679571C06E05644B0B237
+:1017F000814511DB17F8013B73B1B0B2DAB229466B
+:101800002346CDF80080FFF715FE082CEED10636F2
+:10181000B0B2B0F5937FEDD902B0BDE8F08700001B
+:10182000B0B540F60044C4F2010420464FF48041B4
+:1018300000F092FA20464FF4805100F08DFAA4F5A2
+:1018400054452846222100F0DDFC00BF28468021B7
+:1018500000F0DAFC0028F9D120464FF4805100F066
+:101860007DFA20464FF4804100F078FA20464FF48C
+:10187000805100F071FA2846832100F0C3FC00BFBC
+:101880002846802100F0C0FC0028F9D120464FF402
+:10189000805100F063FA20464FF4804100F05CFA7A
+:1018A00020464FF4805100F057FA2846202100F0DE
+:1018B000A9FC00BF2846802100F0A6FC0028F9D131
+:1018C00020464FF4805100F049FA20464FF4804101
+:1018D00000F044FAA4F5806420464FF4007100F053
+:1018E000F7FA70B149F641450120013D08BFB0BD8E
+:1018F000FEF7E4FF20464FF4007100F0E9FA0028FB
+:10190000F2D10020B0BD0000B0B540F60044C4F2F2
+:10191000010420464FF4804100F01EFA20464FF4A7
+:10192000805100F019FAA4F554452846222100F010
+:1019300069FC00BF2846802100F066FC0028F9D130
+:1019400020464FF4805100F009FA20464FF48041C0
+:1019500000F004FA20464FF4805100F0FDF92846CB
+:10196000E02100F04FFC00BF2846802100F04CFC35
+:101970000028F9D120464FF4805100F0EFF92046BD
+:101980004FF4804100F0E8F920464FF4805100F018
+:10199000E3F92846202100F035FC00BF28468021CD
+:1019A00000F032FC0028F9D120464FF4805100F0BD
+:1019B000D5F920464FF4804100F0D0F9A4F58064B9
+:1019C00020464FF4007100F083FA70B149F64145AA
+:1019D0000120013D08BFB0BDFEF770FF20464FF467
+:1019E000007100F075FA0028F2D10020B0BD0000AF
+:1019F000F0B581B040F60044C4F201040E4607463B
+:101A000020464FF4804100F0A7F920464FF4805162
+:101A100000F0A2F9A4F5544528464E2100F0F2FB4F
+:101A20002846802100F0F0FB0028F9D120464FF431
+:101A3000805100F093F920464FF4804100F08EF978
+:101A400020464FF4805100F087F9C7F3C7012846BC
+:101A500000F0D8FB2846802100F0D6FB0028F9D101
+:101A600020464FF4805100F079F920464FF4804130
+:101A700000F072F920464FF4805100F06DF92846CD
+:101A80004F2100F0BFFB00BF2846802100F0BCFBC7
+:101A90000028F9D120464FF4805100F05FF920462C
+:101AA0004FF4804100F05AF920464FF4805100F085
+:101AB00053F9F1B2284600F0A5FB00BF284680216B
+:101AC00000F0A2FB0028F9D120464FF4805100F02D
+:101AD00045F920464FF4805100F03EF9C6F300214D
+:101AE000284600F08FFB00BF2846802100F08CFBC9
+:101AF0000028F9D120464FF4805101B0BDE8F040F4
+:101B000000F02CB9B0B540F60044C4F20104204600
+:101B10004FF4804100F020F920464FF4805100F04E
+:101B20001BF9A4F554452846222100F06BFB00BFA9
+:101B30002846802100F068FB0028F9D120464FF4A8
+:101B4000805100F00BF920464FF4804100F006F977
+:101B500020464FF4805100F0FFF82846F72100F0AE
+:101B600051FB00BF2846802100F04EFB0028F9D130
+:101B700020464FF4805100F0F1F820464FF48041A8
+:101B800000F0EAF820464FF4805100F0E5F82846CE
+:101B9000202100F037FB00BF2846802100F034FBF5
+:101BA0000028F9D120464FF4805100F0D7F82046A4
+:101BB0004FF4804100F0D2F8A4F5806420464FF441
+:101BC000007100F085F970B149F64145013D08BF4B
+:101BD000B0BD0120FEF772FE20464FF4007100F008
+:101BE00077F90028F2D1B0BDB0B540F60044C4F298
+:101BF000010420464FF4804100F0AEF820464FF437
+:101C0000805100F0A9F8A4F554452846222100F09F
+:101C1000F9FA00BF2846802100F0F6FA0028F9D131
+:101C200020464FF4805100F099F820464FF480414F
+:101C300000F094F820464FF4805100F08DF82846CB
+:101C4000FF2100F0DFFA00BF2846802100F0DCFA17
+:101C50000028F9D120464FF4805100F07FF820464B
+:101C60004FF4804100F078F820464FF4805100F0A6
+:101C700073F82846202100F0C5FA00BF28468021CD
+:101C800000F0C2FA0028F9D120464FF4805100F04C
+:101C900065F820464FF4804100F060F8A4F58064B8
+:101CA00020464FF4007100F013F970B149F6414538
+:101CB000013D08BFB0BD0120FEF700FE20464FF4F5
+:101CC000007100F005F90028F2D1B0BD002141609B
+:101CD000012101810170704740F21441C4F20101F9
+:101CE0000860704740F20841C4F20101426851F8AF
+:101CF000083C934341F8083C51F8043C934341F8B5
+:101D0000043C437A002B08BF704703786FEA020C4B
+:101D10002BB151F8043C134341F8043C04E051F862
+:101D2000083C134341F8083C0B6803EA0C030B60C2
+:101D30004B6803EA0C034B60007A012807D018B9FE
+:101D400008681043086070470868104308604868D6
+:101D5000104348607047000041617047016170475F
+:101D600040F200424FF6FF71C0F20012C0E90012CB
+:101D7000704700008B08032B88BF704780B50C228A
+:101D800002EA810E4FF00F0C02EB83010CFA0EF207
+:101D9000DFE803F0022F11200821C4F201010B68D3
+:101DA00000FA0EF023EA02020A600A681043086093
+:101DB000BDE8804070470821C4F201018B6800FA39
+:101DC0000EF023EA02028A608A6810438860BDE848
+:101DD000804070470821C4F20101CB6800FA0EF080
+:101DE00023EA0202CA60CA681043C860BDE88040A6
+:101DF00070470821C4F201014B6800FA0EF023EA93
+:101E000002024A604A6810434860BDE8804070475B
+:101E1000B0B58B790A88032B0BD07BB94979282977
+:101E200001F00F0E18D0182908BF0261110616D153
+:101E30002EE04FF0000E110611D129E003F0080C3E
+:101E40000B79C97903F00403634401F0030103EB48
+:101E5000010E110603D11BE04261110618D00023C8
+:101E60004FF00F0C002104E00131082903F10403B5
+:101E70000ED022FA01F4E407F6D004680CFA03F558
+:101E8000AC43046004680EFA03F52C430460EBE7EE
+:101E9000B2F5807F38BFB0BD120A00234FF00F0C9F
+:101EA000002104E00131082903F104030ED022FAD5
+:101EB00001F4E407F6D044680CFA03F5AC4344603F
+:101EC00044680EFA03F52C434460EBE7B0BD000014
+:101ED00080680840401AB0FA80F04009704700005E
+:101EE00010B582B00420C0F218000121FEF74EFCAC
+:101EF0006C462046FFF734FF40F20040C0F210105D
+:101F000001904FF40050009041F20000C4F2010033
+:101F10002146FFF77DFF02B010BD000041F20C002A
+:101F2000C4F20100016881F40051016070470000B3
+:101F300088B000F0E5F9FEF7A1FCFEF769FBFEF7BB
+:101F400041FBFFF7CDFFFFF787F9FEF733FF40F2C4
+:101F50008808C2F20008FF2440464FF4C8714FF4CD
+:101F600096724FF487730094FFF730FA4046FFF7FC
+:101F70005BFAFF20FFF7FEF943F63E67C0F6000765
+:101F80004B205921FA227A23CDE90074FFF750FB48
+:101F90004046FEF797FD0120FEF7C8FE41F288306B
+:101FA000FEF78CFCFFF7CCF84046FFF73DFAFF2028
+:101FB000FFF7E0F9002447A20A200021182300942B
+:101FC000FFF704FC49A20A20322110230094FFF7F6
+:101FD000FDFB4DA20A201D2110230094FFF7F6FB04
+:101FE00050A20A20642110230094FFF7EFFB46F271
+:101FF0006F40C0F26500069046F66140C4F620507E
+:10200000059047F26120C6F67410049043F63E60D6
+:10201000C5F2200003AD03900A2047212A46182369
+:102020000094FFF7D3FB4046FEF7E6FD4FF47A70CD
+:10203000FEF744FC41A600277B37284631463A4646
+:10204000FEF72AF90A2047212A4618230094FFF7B1
+:10205000BDFB4046FEF7D0FD6420FEF72FFCB7F530
+:10206000577FE9D946F26C40C0F22E00069045F247
+:102070002070C7F26F20059046F66540C6F66C707A
+:10208000049043F63E60C4F620000390002703AAA4
+:102090000A20472118230097FFF798FB40F2880099
+:1020A000C2F20000FEF7A8FD4FF47A70FEF706FCBE
+:1020B000FFF728FD0120FEF739FE40F20004C2F2CE
+:1020C00000046425FFF72AFF20786843FEF7F6FB3B
+:1020D000F8E700BF342E3220496E636820457061F6
+:1020E000706572204D6F64756C6500007769746867
+:1020F00020343030207820333030207265736F6C9C
+:102100007574696F6E00000044657369676E65647D
+:102110002042792057654163742053747564696F58
+:1021200000000000415433324634303341434755B8
+:1021300037204578616D706C650000003E3E204E92
+:10214000756D3D256420202020200000B0B54EF69E
+:102150000C5ECEF2000EDEF800304FF0FF35C3F318
+:10216000022383F00704042C28BF0424033B05FA50
+:1021700004F438BF0023A143994005FA03F39A43BE
+:1021800000F00F03043B4EF2001C7344CEF2000C2F
+:1021900011430C33B0F1FF3F4FEA011100EB0C0289
+:1021A000C8BF02F540730028197048BFB0BD00F0E9
+:1021B0001F01012202FA01F140094CF82010B0BDC4
+:1021C0004EF60C51CEF200010A684FF6FF031A409A
+:1021D00060F30A2242F0806040F0FD7008607047B2
+:1021E0000021C0F8031001600121C1717047000097
+:1021F000026801F0010122F0400242EA811101600F
+:1022000070470000C16070478068084018BF012017
+:1022100070470000C26922F40062C2610A78032A92
+:1022200027D8DFE802F00206121A026822F4004200
+:102230000EE0026822F400420260026822F480424A
+:102240000260026842F4806212E0026842F40042D6
+:102250000260026822F4804206E0026842F4004212
+:102260000260026842F480420260026822F48062E6
+:102270000260CA79036802F0010223F4007343EAA2
+:10228000422202604A78012A06D1CA79012A03D182
+:10229000026842F4807202E0026822F480720260F6
+:1022A0004A78036862F3820303608A784368072AE6
+:1022B00023F4807388BF03F5807343608A780368D2
+:1022C00062F3C5030360CA78036802F0010223F0D9
+:1022D000800343EAC21202600A79036802F0010235
+:1022E00023F4006343EAC22202604A79036862F37E
+:1022F000410303608979026861F30002026070475C
+:1023000080B5FEF787FA01200121FEF7D3F900BF5F
+:10231000FEF72AFA0028FBD002203B210122FEF71B
+:1023200049FA0020FEF712FA02200121FEF7C2F955
+:102330001920FEF7FDF90128FAD10020FEF784F9F3
+:102340000420FEF79DF90420FEF78CF90120FEF72A
+:10235000A5F90220FEF780FAFEF788FA0228FBD1E1
+:102360000020FEF79BF9BDE8804000F001B80000B6
+:10237000B0B541F2040441F20025C4F20204C0F2F7
+:102380007A05FEF773FA02280BD0A0BB206D8005FA
+:1023900031D5E06A800144BF46F60045C0F2DC2535
+:1023A00029E0D4F800C021682268C1F38341C2F358
+:1023B00041721301581C0F29034618BF0223002A3B
+:1023C00018BF03465FEACC3003EB010006D440F6A9
+:1023D0000011C0F23D0100FB01F50CE0216889030A
+:1023E00001D4454307E0216DC1F301310231B5FB52
+:1023F000F1F101FB00F540F20400C2F200000560BB
+:10240000216804A2C1F30311515C026822FA01F1B0
+:102410000160B0BD000000000000000001020304E4
+:10242000060708094EF21001CEF200010A680428DE
+:1024300022F0040208BF04320A607047F1EE100A6D
+:102440004FF6FF71C0F2C03120EA010040F0407049
+:10245000E1EE100A70470000000000000000002FAD
+:10246000000000000700070000147F147F14002400
+:102470002A7F2A120062640813230036495522502D
+:1024800000000503000000001C2241000000412262
+:102490001C000014083E08140008083E080800004C
+:1024A00000A0600000080808080800006060000044
+:1024B000002010080402003E5149453E0000427FC2
+:1024C0004000004261514946002141454B3100180E
+:1024D00014127F10002745454539003C4A494930D0
+:1024E000000171090503003649494936000649498A
+:1024F000291E000036360000000056360000000895
+:102500001422410000141414141400004122140871
+:1025100000020151090600324959513E007C121156
+:10252000127C007F49494936003E41414122007FEB
+:102530004141221C007F49494941007F09090901A5
+:10254000003E4149497A007F0808087F0000417F2A
+:102550004100002040413F01007F08142241007FDC
+:1025600040404040007F020C027F007F0408107F43
+:10257000003E4141413E007F09090906003E4151AC
+:10258000215E007F09192946004649494931000169
+:10259000017F0101003F4040403F001F2040201FBD
+:1025A000003F4038403F0063140814630007087080
+:1025B000080700615149454300007F414100005533
+:1025C0002A552A55000041417F00000402010204FF
+:1025D00000404040404000000102040000205454EC
+:1025E0005478007F4844443800384444442000383C
+:1025F0004444487F00385454541800087E090102AE
+:102600000018A4A4A47C007F080404780000447D82
+:102610004000004080847D00007F102844000000BE
+:10262000417F4000007C04180478007C0804047892
+:1026300000384444443800FC24242418001824247E
+:1026400018FC007C0804040800485454542000047A
+:102650003F444020003C4040207C001C2040201C87
+:10266000003C4030403C004428102844001CA0A0FE
+:10267000A07C004464544C4414141414141400003A
+:10268000000000000000000000000000FC0000004E
+:10269000000002000000000C020C0200000000001C
+:1026A000000090D0BCD0BC900003000300001824B0
+:1026B000FE448C000302070201001824D8B04C80AD
+:1026C000000300010201C038E438E0000102020109
+:1026D00002020806000000000000000000000000E8
+:1026E00000F80402000000010204000204F80000E7
+:1026F0000004020100009060F860900000000100FA
+:1027000000002020FC20200000000100000000004C
+:10271000000000000806000000002020202020000B
+:1027200000000000000000000000000000020000A7
+:1027300000000080601C0200040300000000F80498
+:102740000404F8000102020201000008FC0000007D
+:10275000000203020000188444241800030202024D
+:10276000020008042424D80001020202010040B043
+:1027700088FC80000000000302003C242424C400E4
+:10278000010202020100F824242CC000010202020E
+:1027900001000C04E41C0400000003000000D82425
+:1027A0002424D80001020202010038444444F80005
+:1027B00000030202010000001000000000000200FF
+:1027C00000000000200000000000060000000020C3
+:1027D0005088040200000000010290909090900048
+:1027E00000000000000000020488502000020100E8
+:1027F00000001804C4241800000002000000F804BF
+:10280000E494F80001020202020000E09CF0800063
+:1028100002030000030204FC2424D8000203020285
+:102820000100F80404040C0001020202010004FC8F
+:102830000404F80002030202010004FC24740C00EA
+:1028400002030202030004FC24740C0002030200D1
+:102850000000F0080444CC4000010202010004FC26
+:102860002020FC040203000003020404FC04040012
+:10287000020203020200000404FC04040604040330
+:10288000000004FC24D00C0402030200030204FC38
+:1028900004000000020302020203FC3CC03CFC00F6
+:1028A00003000300030004FC30C4FC040203020024
+:1028B0000300F8040404F80001020202010004FC11
+:1028C00024241800020302000000F8848404F800A5
+:1028D00001020207050004FC2464980002030200C0
+:1028E0000302182424448C000302020201000C0499
+:1028F000FC040C0000020302000004FC0000FC04C5
+:10290000000102020100047C80E01C0400000300BE
+:1029100000001CE03CE01C00000300030000049CDD
+:10292000609C0400020300030200041CE01C04007D
+:102930000002030200000C84641C04000203020273
+:1029400003000000FE020200000007040400000E65
+:1029500030C00000000000010200000202FE000082
+:10296000000404070000000402040000000000004E
+:102970000000000000000000080808080808000027
+:10298000020000000000000000000040A0A0C00005
+:1029900000010202030204FC2020C0000003020226
+:1029A000010000C02020600000010202020000C0FF
+:1029B0002024FC0000010202030200C0A0A0C0000D
+:1029C0000001020202000020F82424040002030295
+:1029D00002000040A0A0602000070A0A0A0404FCCC
+:1029E0002020C0000203020003020020E4000000D7
+:1029F000000203020000000020E4000008080807AD
+:102A0000000004FC80E02020020302000302040412
+:102A1000FC000000020203020200E020E020C000EF
+:102A200003000300030020E02020C0000203020096
+:102A3000030200C02020C00000010202010020E0CB
+:102A40002020C000080F0A02010000C02020E00082
+:102A50000001020A0F0820E04020200002030200CB
+:102A600000000060A0A0200000020202030000207D
+:102A7000F820000000000102020020E00020E00039
+:102A800000010202030220E0208060200000030118
+:102A900000006080E0806000000300030000206010
+:102AA0008060200002030003020020E020806020FC
+:102AB0000808070100000020A060200000020302B7
+:102AC0000200000020DE02000000000704000000F9
+:102AD00000FF00000000000F00000002DE200000E8
+:102AE00000040700000002010204040200000000CC
+:102AF00000000000000000000000000000000000D6
+:102B00000000000000F8000000000000003330006A
+:102B1000000000100C06100C060000000000000071
+:102B2000000040C07840C0784000043F04043F04E7
+:102B30000400007088FC08300000001820FF211EEF
+:102B40000000F008F000E018000000211C031E2126
+:102B50001E0000F00888700000001E2123241927A1
+:102B6000211010160E000000000000000000000000
+:102B70000000000000E01804020000000007182018
+:102B8000400000020418E000000000402018070088
+:102B90000000404080F0804040000202010F01022E
+:102BA0000200000000F0000000000101011F01010F
+:102BB0000100000000000000000080B07000000074
+:102BC0000000000000000000000000010101010100
+:102BD0000101000000000000000000303000000093
+:102BE000000000000000806018040060180601006A
+:102BF000000000E010080810E000000F1020201076
+:102C00000F00001010F8000000000020203F2020DE
+:102C10000000007008080888700000302824222175
+:102C2000300000300888884830000018202020112B
+:102C30000E000000C02010F8000000070424243F0C
+:102C4000240000F8088888080800001921202011B5
+:102C50000E0000E0108888180000000F11202011DD
+:102C60000E0000380808C83808000000003F0000C7
+:102C700000000070880808887000001C22212122B2
+:102C80001C0000E010080810E000000031222211B2
+:102C90000F00000000C0C000000000000030300045
+:102CA00000000000008000000000000080600000C4
+:102CB00000000000804020100800000102040810FD
+:102CC000200040404040404040000404040404040C
+:102CD00004000008102040800000002010080402BA
+:102CE0000100007048080808F000000000303601BC
+:102CF0000000C030C828E810E0000718272423147B
+:102D00000B000000C038E0000000203C2302022736
+:102D1000382008F8888888700000203F2020201183
+:102D20000E00C030080808083800071820202010BE
+:102D3000080008F808080810E000203F20202010B4
+:102D40000F0008F88888E8081000203F2020232082
+:102D5000180008F88888E8081000203F20000300C9
+:102D60000000C03008080838000007182020221E84
+:102D7000020008F808000008F808203F210101219E
+:102D80003F20000808F8080800000020203F20200D
+:102D9000000000000808F8080800C08080807F005C
+:102DA000000008F888C028180800203F20012638B5
+:102DB000200008F8080000000000203F202020200C
+:102DC000300008F8F800F8F80800203F003F003F06
+:102DD000200008F830C00008F808203F200007183D
+:102DE0003F00E01008080810E0000F10202020101D
+:102DF0000F0008F808080808F000203F2101010131
+:102E00000000E01008080810E0000F1824243850D3
+:102E10004F0008F8888888887000203F2000030C45
+:102E2000302000708808080838000038202121224E
+:102E30001C00180808F8080818000000203F2000AF
+:102E4000000008F808000008F808001F20202020D3
+:102E50001F000878880000C83808000007380E01F5
+:102E60000000F80800F80008F800033C0700073CE1
+:102E70000300081868808068180820302C03032C91
+:102E800030200838C800C83808000000203F200063
+:102E9000000010080808C838080020382621202023
+:102EA0001800000000FE020202000000007F404007
+:102EB0004000000C30C00000000000000001063897
+:102EC000C00000020202FE000000004040407F00FF
+:102ED00000000000040202020400000000000000E4
+:102EE00000000000000000000000808080808080E2
+:102EF00080800002020400000000000000000000CA
+:102F0000000000008080808000000019242222221E
+:102F10003F2008F8008080000000003F11202011B1
+:102F20000E000000008080800000000E1120202094
+:102F30001100000000808088F800000E1120201091
+:102F40003F200000808080800000001F222222227B
+:102F50001300008080F0888888180020203F2020FF
+:102F600000000000808080808000006B9494949327
+:102F7000600008F8008080800000203F21000020D1
+:102F80003F2000809898000000000020203F202073
+:102F90000000000000809898000000C08080807FC2
+:102FA000000008F8000080808000203F24022D30BF
+:102FB0002000000808F8000000000020203F20202A
+:102FC00000008080808080808000203F20003F20A3
+:102FD000003F8080008080800000203F2100002092
+:102FE0003F200000808080800000001F20202020E3
+:102FF0001F00808000808000000080FFA120201141
+:103000000E000000008080808000000E112020A0B3
+:10301000FF80808080008080800020203F21200071
+:10302000010000008080808080000033242424245C
+:103030001900008080E0808000000000001F202038
+:1030400000008080000000808000001F20202010F1
+:103050003F20808080000080808000010E300806C4
+:10306000010080800080008080800F300C030C30D5
+:103070000F0000808000808080000020312E0E3103
+:103080002000808080000080808080818E70180603
+:10309000010000808080808080000021302C22216F
+:1030A000300000000000807C020200000000003FB1
+:1030B000404000000000FF00000000000000FF0092
+:1030C00000000002027C800000000040403F000041
+:1030D00000000006010102020404000000000000DC
+:1030E00000000000000000000000000000000000E0
+:1030F00000000000000000000000000000000000D0
+:103100000000000000000000000000F0F0F00000EF
+:1031100000000000000000017F010000000000002E
+:103120000000001C1C1C0000000000008060301C1F
+:103130008C60301C0C00000000000000000000004B
+:10314000000000000000000000000000000000007F
+:1031500000E00000000000E000000086E69F868698
+:103160008686E69F860000011F01010101011F0103
+:103170000100000080C06020F820E0C000000000D6
+:1031800003070C18FF70E18100000000070F10100A
+:103190007F100F0700008060206080000000E020AA
+:1031A00000000F3020309F70DC371030C00000006E
+:1031B000100E03000718101807000000C02020E0C0
+:1031C000C0000000000080E01F38E88703C43C0412
+:1031D0000000070F1810100B070D101008000080DA
+:1031E0008C4C3800000000000000000000000000CF
+:1031F00000000000000000000000000000000000CF
+:10320000000000000000000080E030080400000022
+:10321000000000FEFF0100000000000000000000B0
+:10322000030F1820400000040830E0800000000078
+:1032300000000000000001FFFE0000000000004050
+:1032400020180F0300000000000000000000000034
+:10325000C00000000000004266663C18FF183C6693
+:1032600066420000000000000300000000000000B3
+:10327000000000008000000000000010101010107E
+:10328000FF101010101000000000000003000000EC
+:10329000000000000000000000000000000000002E
+:1032A0000000000000000000000000808C4C38008E
+:1032B000000000000000000000000000000000000E
+:1032C000000000101010101010101010100000005E
+:1032D00000000000000000000000000000000000EE
+:1032E00000000000000000000000000000000000DE
+:1032F000000000001C1C1C0000000000000000007A
+:10330000000000000000E0380C00000000008070A9
+:103310001C03000000000060380E010000000000E7
+:103320000000000080C060202060C080000000FE1F
+:10333000FF010000000001FFFE000001070E181051
+:1033400010180E0701000000808080C0E00000001F
+:1033500000000000000000FFFF000000000000006F
+:103360001010101F1F10101000000080402020209F
+:103370002060C080000000030300804020381F0749
+:103380000000001C1A1918181818181F00000080D7
+:10339000C020202060C08000000000030300101047
+:1033A000182FE780000000070F10101010180F07EB
+:1033B0000000000000000000C0E0F000000000C0BD
+:1033C000B088868180FFFF80800000000000001030
+:1033D000101F1F1010000000E060606060606060FF
+:1033E000000000003F1008080818F0E00000000787
+:1033F0000B101010101C0F030000000080C04020B4
+:103400002020E0C0000000FCFF211008080818F090
+:10341000E0000001070C18101010080F0300000056
+:10342000C0E06060606060E06000000003000000D9
+:10343000E0180700000000000000001F1F0000004F
+:1034400000000080C0602020202060C08000008735
+:10345000EF2C1818303068CF830000070F081010C9
+:103460001010180F07000000C0C020202020C080CE
+:103470000000001F3F604040402010FFFE000000A1
+:103480000C1C101010080F030000000000000000CA
+:1034900000000000000000000000000E0E0E000002
+:1034A000000000000000001C1C1C000000000000C8
+:1034B0000000000000000000000000000000000C00
+:1034C0000C00000000000000000000583800000060
+:1034D00000000000000000000080402010000000FC
+:1034E00010284482010000000000000000000000DD
+:1034F00001020408100000000000000000000000AD
+:103500000000008484848484848484848400000093
+:1035100000000000000000000000000010204080BB
+:1035200000000000000000000000000001824428AC
+:10353000100000001008040201000000000000C09C
+:1035400020201010101030E0C0000003030000F035
+:1035500010080C070300000000001C1C1C000000E9
+:103560000000000000C0406020202040C00000FC9F
+:10357000FF01F00E03C1FE03807F0001070E08115A
+:103580001110110904020000000080E0E0000000BA
+:1035900000000000807C4340477FF8800000101846
+:1035A0001F1000000000131F1C1020E0E02020204E
+:1035B0002060C080000000FFFF10101010182FE7DF
+:1035C0008000101F1F1010101010180F07000000AF
+:1035D00080C0402020202060E00000FCFF010000AF
+:1035E0000000000001000001070E18101010080470
+:1035F000030020E0E02020202040C080000000FFE9
+:10360000FF000000000001FFFE00101F1F1010103F
+:1036100018080E07010020E0E02020202020206074
+:10362000800000FFFF101010107C00000000101F31
+:103630001F10101010101018060020E0E0202020AD
+:1036400020206060800000FFFF101010107C000040
+:103650000100101F1F10000000000000000000000B
+:1036600080C06020202040E0000000FCFF0100003E
+:103670004040C0C140400001070E181010100F0F4D
+:10368000000020E0E0200000000020E0E02000FF3B
+:10369000FF101010101010FFFF00101F1F1000006F
+:1036A0000000101F1F100000202020E0E02020203C
+:1036B00000000000000000FFFF000000000000000C
+:1036C0001010101F1F10101000000000000020201C
+:1036D00020E0E020202000000000000000FFFF00AC
+:1036E00000000060E0808080C07F3F00000020E09C
+:1036F000E020000020A06020200000FFFF30187CA8
+:10370000E3C000000000101F1F10000001131F1C69
+:10371000181020E0E020000000000000000000FF82
+:10372000FF000000000000000000101F1F1010101C
+:1037300010101018060020E0E0E000000000E0E0BB
+:10374000E02000FF013FFEC0E01E01FFFF00101F50
+:103750001000031F0300101F1F1020E0E0C0000036
+:1037600000000020E02000FF0003071C78E080003C
+:10377000FF00101F100000000000030F1F000000DA
+:1037800080C060202060C080000000FEFF010000BB
+:10379000000000FFFE000001070E181010180C07B3
+:1037A000010020E0E0202020202060C0800000FFF9
+:1037B000FF2020202020301F0F00101F1F100000AE
+:1037C000000000000000000080C060202060C08079
+:1037D000000000FEFF010000000000FFFE000001ED
+:1037E000070E1111133C7C67210020E0E02020200F
+:1037F000202060C0800000FFFF101030F0D0080FC4
+:103800000700101F1F10000000030F1C1010008085
+:10381000C060202020204040E00000070F0C181856
+:10382000303060E08100001F0C0810101010180FDD
+:1038300007008060202020E0E02020206080010040
+:10384000000000FFFF000000000100000000101F4A
+:103850001F100000000020E0E02000000000002019
+:10386000E02000FFFF00000000000000FF00000754
+:103870000F1810101010100807002060E0E0200062
+:10388000000020E060200000077FF88000807C03BB
+:10389000000000000000071F1C070000000020E0DF
+:1038A000E02000E0E0200020E0200007FFF8E01F1B
+:1038B000FFFCE01F00000000031F0300011F0300C6
+:1038C0000000002060E0A0000020E0602000000078
+:1038D00000038F7CF8C6010000000010181E1300C2
+:1038E00001171F1810002060E0E02000000020E019
+:1038F0006020000001073EF8E0180700000000000B
+:103900000010101F1F1010000000008060202020F9
+:1039100020A0E0E0200000000000C0F03E0F030007
+:10392000000000101C1F17101010101806000000D7
+:10393000000000FC0404040404000000000000FF78
+:1039400000000000000000000000007F40404040F8
+:103950004000000010E00000000000000000000037
+:103960000000031C60800000000000000000000058
+:1039700000030C70800000000404040404FC000038
+:10398000000000000000000000FF00000000000038
+:1039900040404040407F0000000000000010080C44
+:1039A000040C0810000000000000000000000000EF
:1039B0000000000000000000000000000000000007
:1039C00000000000000000000000000000000000F7
-:1039D00000000000000000000000000000000000E7
-:1039E00000000000000000000000000000000000D7
+:1039D00000000000000080808080808080808080E7
+:1039E00080800000000404080800000000000000BF
:1039F00000000000000000000000000000000000C7
:103A000000000000000000000000000000000000B6
-:103A100000000000000000000000000000000000A6
-:103A20000000000000000000000000000000000096
-:103A30000000000000000000000000000000000086
-:103A40000000000000000000000000000000000076
-:103A50000000000000000000000000000000000066
-:103A60000000000000000000000000000000000056
-:103A70000000000000000000000000000000000046
-:103A80000000000000000000000000000000000036
-:103A90000000000000000000000000000000000026
-:103AA0000000000000000000000000000000000016
-:103AB0000000000000000000000000000000000006
-:103AC00000000000000000000000000000000000F6
-:103AD00000000000000000000000000000000000E6
-:103AE00000000000000000000000000000000000D6
-:103AF00000000000000000000000000000000000C6
-:103B000000000000000000000000000000000000B5
-:103B100000000000000000000000000000000000A5
-:103B20000000000000000000000000000000000095
-:103B30000000000000000000000000000000000085
-:103B40000000000000000000000000000000000075
-:103B50000000000000000000000000000000000065
-:103B60000000000000000000000000000000000055
-:103B70000000000000000000000000000000000045
-:103B80000000000000000000000000000000000035
-:103B90000000000000000000000000000000000025
-:103BA0000000000000000000000000000000000015
-:103BB0000000000000000000000000000000000005
-:103BC00000000000000000000000000000000000F5
-:103BD00000000000000000000000000000000000E5
-:103BE00000000000000000000000000000000000D5
-:103BF00000000000000000000000000000000000C5
-:103C000000000000000000000000000000000000B4
-:103C100000000000000000000000000000000000A4
-:103C20000000000000000000000000000000000094
-:103C30000000000000000000000000000000000084
-:103C40000000000000000000000000000000000074
-:103C50000000000000000000000000000000000064
-:103C60000000000000000000000000000000000054
-:103C70000000000000000000000000000000000044
-:103C80000000000000000000000000000000000034
-:103C90000000000000000000000000000000000024
-:103CA0000000000000000000000000000000000014
-:103CB0000000000000000000000000000000000004
-:103CC00000000000000000000000000000000000F4
-:103CD00000000000000000000000000000000000E4
-:103CE00000000000000000000000000000000000D4
-:103CF00000000000000000000000000000000000C4
-:103D000000000000000000000000000000000000B3
-:103D100000000000000000000000000000000000A3
-:103D20000000000000000000000000000000000093
-:103D30000000000000000000000000000000000083
-:103D40000000000000000000000000000000000073
-:103D50000000000000000000000000000000000063
-:103D60000000000000000000000000000000000053
-:103D70000000000000000000000000000000000043
-:103D80000000000000000000000000000000000033
-:103D90000000000000000000000000000000000023
-:103DA0000000000000000000000000000000000013
-:103DB0000000000000000000000000000000000003
-:103DC00000000000000000000000000000000000F3
-:103DD00000000000000000000000000000000000E3
-:103DE00000000000000000000000000000000000D3
-:103DF00000000000000000000000000000000000C3
-:103E000000000000000000000000000000000000B2
-:103E100000000000000000000000000000000000A2
-:103E20000000000000000000000000000000000092
+:103A10000000000098D844642424FCF80000000F43
+:103A20001F18101010081F1F10180020E0F00000D1
+:103A30000000000000000000FFFF180804040CF85C
+:103A4000F00000001F0F18101010180F03000000E6
+:103A50000000000000000000000000E0F81804046E
+:103A6000043C3800000000030F0C10101010080672
+:103A700000000000000000000020E0F0000000E076
+:103A8000F81C04040408FFFF000000030F181010C6
+:103A900010081F0F080000000000000000000000D8
+:103AA00000000000E0F8484444444C7870000000F6
+:103AB000030F0C181010100804000000000080C054
+:103AC000602020E0C00000040404FFFF040404049C
+:103AD0000000000010101F1F101010000000000058
+:103AE00000000000000000000000000070F88C04DE
+:103AF000048CF874040C007076CF8D8D8D89C87895
+:103B000070000020E0F00000000000000000000055
+:103B1000FFFF08040404FCF8000000101F1F100041
+:103B200000101F1F10000000000000606000000077
+:103B300000000000040404FCFC0000000000000081
+:103B40001010101F1F1010100000000000000000D7
+:103B500000606000000000000000040404FCFC00A1
+:103B600000000000C0C08080C07F3F000000002037
+:103B7000E0F000000000000000000000FFFF80C037
+:103B8000F41C0404000000101F1F1100031F1C1070
+:103B900010000000202020E0F000000000000000E5
+:103BA000000000FFFF000000000000001010101FC8
+:103BB0001F101010000000000000000000000000B6
+:103BC000000004FCFC0804FCFC0804FCFC00101FC2
+:103BD0001F10001F1F10001F1F100000000000001A
+:103BE0000000000000000004FCFC08080404FCF8CD
+:103BF000000000101F1F100000101F1F1000000009
+:103C00000000000000000000000000E0F0180C04BC
+:103C1000040C18F0E00000030F0C101010100C0F33
+:103C2000030000000000000000000000000000048D
+:103C3000FCFC080404040CF8F0000080FFFF8890EE
+:103C400010101C0F03000000000000000000000026
+:103C5000000000E0F81C04040408F8FC0000000365
+:103C60000F1810109088FFFF800000000000000077
+:103C7000000000000000040404FCFC100804040C14
+:103C80000C001010101F1F1010100000000000008A
+:103C90000000000000000000000000003078CCC4EC
+:103CA0008484840C1C0000001E1810101011190FC1
+:103CB00006000000000000C000000000000000043A
+:103CC0000404FFFF040404000000000000000F1FB4
+:103CD0001010100C000000000000000000000000A8
+:103CE00000000004FCFE00000004FCFE00000000D8
+:103CF0000F1F181010081F0F080000000000000020
+:103D000000000000000000040C3CFCC40000C43CA7
+:103D10000C0400000000010F1E0E01000000000056
+:103D200000000000000000000000043CFCC400E4AF
+:103D30007CFC84807C040000071F070000071F072D
+:103D4000000000000000000000000000000000046F
+:103D5000041C7CE4C0341C0404000010101C160178
+:103D6000131F1C18100000000000000000000000DD
+:103D7000000000040C3CFCC400C43C04040000002F
+:103D8000C080C1370E0100000000000000000000EC
+:103D900000000000000000001C0404C4F47C1C04AB
+:103DA00000000000101C1F17111010180E0000005A
+:103DB0000000000000F80C040000000000000010EB
+:103DC00028EF00000000000000000000003F6040FD
+:103DD0000000000000000000FF00000000000000E4
+:103DE00000000000FF0000000000000000000000D4
+:103DF000FF00000000000000040CF80000000000BC
+:103E0000000000000000EF2810000000000000008B
+:103E100040603F000000000000000018060202049D
+:103E20000810202030080000000000000000000002
:103E30000000000000000000000000000000000082
:103E40000000000000000000000000000000000072
:103E50000000000000000000000000000000000062
@@ -1011,72 +1011,72 @@
:103F100000000000000000000000000000000000A1
:103F20000000000000000000000000000000000091
:103F30000000000000000000000000000000000081
-:103F40000000000000008080808080800000000071
-:103F500000C0E0E0E0E0C0C00000000000000000A1
+:103F40000000000000000000000000000000000071
+:103F50000000000000000000000000000000000061
:103F60000000000000000000000000000000000051
:103F70000000000000000000000000000000000041
-:103F800000000000000000007EFEFEFEFEFEFE00BF
-:103F9000000080FEFEFEFEFEFEFEFC00000000FCB7
-:103FA000FEFEFEFEFE3E00000000000000008080DD
-:103FB0008080808000000000000000000000000001
-:103FC00080F8FEFEFEFEFEFEFEFEF0800000000019
-:103FD00000000000000000000080808080808000E1
-:103FE0000000000000F8F8F8F8F8F8F80000000009
-:103FF000000000000000000000000000E0F0F8FCFD
-:10400000FCFEFE7E7E3E3E7E7EFEFCFC78300000A6
-:104010000000F8F8F8F8F8F8F800000000000000D8
+:103F80000000000000000000000000000000000031
+:103F90000000000000000000000000000000000021
+:103FA0000000000000000000000000000000000011
+:103FB0000000000000000000000000000000000001
+:103FC00000000000000000000000000000000000F1
+:103FD00000000000000000000000000000000000E1
+:103FE00000000000000000000000000000000000D1
+:103FF00000000000000000000000000000000000C1
+:1040000000000000000000000000000000000000B0
+:1040100000000000000000000000000000000000A0
:104020000000000000000000000000000000000090
-:104030000000000000000000000080808080800000
-:10404000FFFFFFFFFFFFFF000000030F1F1F1F1FE9
-:104050000F0F0000000000000000008080808080C2
-:104060008080000000000000000000000000000050
+:104030000000000000000000000000000000000080
+:104040000000000000000000000000000000000070
+:104050000000000000000000000000000000000060
+:104060000000000000000000000000000000000050
:104070000000000000000000000000000000000040
-:104080000000003FFFFFFFFFFFFC00C0FFFFFFFF3E
-:104090007FFFFFFFFFFF8000FEFFFFFFFFFF0F001E
-:1040A0000000F0F8FEFEFFFF7F1F0F0F1FFFFFFF56
-:1040B000FEFCF8C000000000C0FCFFFFFFFF7F0710
-:1040C0001FFFFFFFFFFFF88000000000C0F0FCFEB4
-:1040D000FFFFFF7F1F1F1F1F3F3F3F0E041F1FFFDC
-:1040E000FFFFFFFFFFFF1F1F1F1F0000000000005A
-:1040F0000000000000001F7FFFFFFFFFFFFCF8F83B
-:10410000F0F0E0E0C1C08000001F1F1FFFFFFFFFB5
-:10411000FFFFFF1F1F1F0F000000FFFFFFFFFFFF3C
-:1041200000000000FFFFFFFFFFFFFF000000C0F8DE
-:10413000FCFEFFFFFF7F1F1F1F3FFFFFFFFFFFFF73
-:10414000FF00000000FFFFFFFFFFFFFF000000C0B7
-:10415000F8FCFEFFFFFF3F1F1F1F3FFFFFFFFEFC9E
-:10416000F8E0000000000000000000000000000077
-:1041700000000000000000000000000000000FFF31
-:10418000FFFFFFFFFCFFFFFFFF1F0001FFFFFFFF1F
-:10419000FFFEFFFFFFFFFF070000001EFFFFFFFF06
-:1041A000FFFFDF1F1F1F1F1F1F9F9F1F1F1F0000DD
-:1041B000E0FEFFFFFFFFFFFFFCFCFCFDFFFFFFFF3A
-:1041C000FFFFFCC00000FFFFFFFFFFFFFF800000BC
-:1041D000000000800000000000FFFFFFFFFFFFFF66
+:104080000000000000000000000000000000000030
+:104090000000000000000000000000000000000020
+:1040A0000000000000000000000000000000000010
+:1040B0000000000000000000000000000000000000
+:1040C00000000000000000000000000000000000F0
+:1040D00000000000000000000000000000000000E0
+:1040E00000000000000000000000000000000000D0
+:1040F00000000000000000000000000000000000C0
+:1041000000000000000000000000000000000000AF
+:10411000000000000000000000000000000000009F
+:10412000000000000000000000000000000000008F
+:10413000000000000000000000000000000000007F
+:10414000000000000000000000000000000000006F
+:10415000000000000000000000000000000000005F
+:10416000000000000000000000000000000000004F
+:10417000000000000000000000000000000000003F
+:10418000000000000000000000000000000000002F
+:10419000000000000000000000000000000000001F
+:1041A000000000000000000000000000000000000F
+:1041B00000000000000000000000000000000000FF
+:1041C00000000000000000000000000000000000EF
+:1041D00000000000000000000000000000000000DF
:1041E00000000000000000000000000000000000CF
-:1041F00080C0C0800101030303070FFFFFFFFFFF23
-:10420000FFFF70000000FFFFFFFFFFFFFF00000047
-:1042100000000000FFFFFFFFFFFF00000080FFFF26
-:10422000FFFFFFFFFF000000FFFFFFFFFFFFFF801A
-:1042300000000000FFFFFFFFFFFFFF00000000FF86
-:10424000FFFFFFFFFFFF000000FFFFFFFFFFFFFF7B
-:104250008000000000FFFFFFFFFFFFFF00000000E5
+:1041F00000000000000000000000000000000000BF
+:1042000000000000000000000000000000000000AE
+:10421000000000000000000000000000000000009E
+:10422000000000000000000000000000000000008E
+:10423000000000000000000000000000000000007E
+:10424000000000000000000000000000000000006E
+:10425000000000000000000000000000000000005E
:10426000000000000000000000000000000000004E
-:10427000000000000000000000073F3F3F3F3F3FBD
-:104280003F3F0F000000003F3F3F3F3F3F3F3F3F6A
-:1042900001000000000001070F1F1F3F3F3F3E3E8F
-:1042A0003E3E3F3F1F1F0E00303E3F3F3F3F3F1F00
-:1042B00001000000000000033F3F3F3F3F3F3C0044
-:1042C0000003070F1F3F3F3F3F3E3E3F3F3F1F1E44
-:1042D000080000030F1F3F3F3F3F3F3E3F3F1C187A
-:1042E000000000000000000000070F1F1F3F3F3FBD
-:1042F0003F3E3E3F3F3F3F1F1F0F070300000000B0
-:10430000070F1F3F3F3F3F3E3F3F3F1C00000F1F37
-:104310003F3F3F3F3F3E3F1F1F3F3F3F3F3F3F002D
-:10432000000000070F1F3F3F3F3F3F3E3F1F1F3F23
-:104330003F3F3F3F3F000000003F3F3F3F3F3F3F89
-:104340000000000003070F1F3F3F3F3F3E3E3F3F3F
-:104350003F1F1F0F030000000000000000000000CE
+:10427000000000000000000000000000000000003E
+:10428000000000000000000000000000000000002E
+:10429000000000000000000000000000000000001E
+:1042A000000000000000000000000000000000000E
+:1042B00000000000000000000000000000000000FE
+:1042C00000000000000000000000000000000000EE
+:1042D00000000000000000000000000000000000DE
+:1042E00000000000000000000000000000000000CE
+:1042F00000000000000000000000000000000000BE
+:1043000000000000000000000000000000000000AD
+:10431000000000000000000000000000000000009D
+:10432000000000000000000000000000000000008D
+:10433000000000000000000000000000000000007D
+:10434000000000000000000000000000000000006D
+:10435000000000000000000000000000000000005D
:10436000000000000000000000000000000000004D
:10437000000000000000000000000000000000003D
:10438000000000000000000000000000000000002D
@@ -1085,72 +1085,72 @@
:1043B00000000000000000000000000000000000FD
:1043C00000000000000000000000000000000000ED
:1043D00000000000000000000000000000000000DD
-:1043E00000000000000000000000000000000000CD
-:1043F00000000000000000000000000000000000BD
+:1043E00000000000000080808080808000000000CD
+:1043F00000C0E0E0E0E0C0C00000000000000000FD
:1044000000000000000000000000000000000000AC
:10441000000000000000000000000000000000009C
-:10442000000000000000000000000000000000008C
-:10443000000000000000000000000000000000007C
-:10444000000000000000000000000000000000006C
-:10445000000000000000000000000000000000005C
-:10446000000000000000000000000000000000004C
-:10447000000000000000000000000000000000003C
-:10448000000000000000000000000000000000002C
-:10449000000000000000000000000000000000001C
-:1044A000000000000000000000000000000000000C
-:1044B00000000000000000000000000000000000FC
+:1044200000000000000000007EFEFEFEFEFEFE001A
+:10443000000080FEFEFEFEFEFEFEFC00000000FC12
+:10444000FEFEFEFEFE3E0000000000000000808038
+:10445000808080800000000000000000000000005C
+:1044600080F8FEFEFEFEFEFEFEFEF0800000000074
+:10447000000000000000000000808080808080003C
+:104480000000000000F8F8F8F8F8F8F80000000064
+:10449000000000000000000000000000E0F0F8FC58
+:1044A000FCFEFE7E7E3E3E7E7EFEFCFC7830000002
+:1044B0000000F8F8F8F8F8F8F80000000000000034
:1044C00000000000000000000000000000000000EC
-:1044D00000000000000000000000000000000000DC
-:1044E00000000000000000000000000000000000CC
-:1044F00000000000000000000000000000000000BC
-:1045000000000000000000000000000000000000AB
+:1044D000000000000000000000008080808080005C
+:1044E000FFFFFFFFFFFFFF000000030F1F1F1F1F45
+:1044F0000F0F00000000000000000080808080801E
+:1045000080800000000000000000000000000000AB
:10451000000000000000000000000000000000009B
-:10452000000000000000000000000000000000008B
-:10453000000000000000000000000000000000007B
-:10454000000000000000000000000000000000006B
-:10455000000000000000000000000000000000005B
-:10456000000000000000000000000000000000004B
-:10457000000000000000000000000000000000003B
-:10458000000000000000000000000000000000002B
-:10459000000000000000000000000000000000001B
-:1045A000000000000000000000000000000000000B
-:1045B00000000000000000000000000000000000FB
-:1045C00000000000000000000000000000000000EB
-:1045D00000000000000000000000000000000000DB
-:1045E00000000000000000000000000000000000CB
-:1045F00000000000000000000000000000000000BB
-:1046000000000000000000000000000000000000AA
-:10461000000000000000000000000000000000009A
-:10462000000000000000000000000000000000008A
-:10463000000000000000000000000000000000007A
-:10464000000000000000000000000000000000006A
-:10465000000000000000000000000000000000005A
-:10466000000000000000000000000000000000004A
-:10467000000000000000000000000000000000003A
+:104520000000003FFFFFFFFFFFFC00C0FFFFFFFF99
+:104530007FFFFFFFFFFF8000FEFFFFFFFFFF0F0079
+:104540000000F0F8FEFEFFFF7F1F0F0F1FFFFFFFB1
+:10455000FEFCF8C000000000C0FCFFFFFFFF7F076B
+:104560001FFFFFFFFFFFF88000000000C0F0FCFE0F
+:10457000FFFFFF7F1F1F1F1F3F3F3F0E041F1FFF37
+:10458000FFFFFFFFFFFF1F1F1F1F000000000000B5
+:104590000000000000001F7FFFFFFFFFFFFCF8F896
+:1045A000F0F0E0E0C1C08000001F1F1FFFFFFFFF11
+:1045B000FFFFFF1F1F1F0F000000FFFFFFFFFFFF98
+:1045C00000000000FFFFFFFFFFFFFF000000C0F83A
+:1045D000FCFEFFFFFF7F1F1F1F3FFFFFFFFFFFFFCF
+:1045E000FF00000000FFFFFFFFFFFFFF000000C013
+:1045F000F8FCFEFFFFFF3F1F1F1F3FFFFFFFFEFCFA
+:10460000F8E00000000000000000000000000000D2
+:1046100000000000000000000000000000000FFF8C
+:10462000FFFFFFFFFCFFFFFFFF1F0001FFFFFFFF7A
+:10463000FFFEFFFFFFFFFF070000001EFFFFFFFF61
+:10464000FFFFDF1F1F1F1F1F1F9F9F1F1F1F000038
+:10465000E0FEFFFFFFFFFFFFFCFCFCFDFFFFFFFF95
+:10466000FFFFFCC00000FFFFFFFFFFFFFF80000017
+:10467000000000800000000000FFFFFFFFFFFFFFC1
:10468000000000000000000000000000000000002A
-:10469000000000000000000000000000000000001A
-:1046A000000000000000000000000000000000000A
-:1046B00000000000000000000000000000000000FA
-:1046C00000000000000000000000000000000000EA
-:1046D00000000000000000000000000000000000DA
-:1046E00000000000000000000000000000000000CA
-:1046F00000000000000000000000000000000000BA
+:1046900080C0C0800101030303070FFFFFFFFFFF7E
+:1046A000FFFF70000000FFFFFFFFFFFFFF000000A3
+:1046B00000000000FFFFFFFFFFFF00000080FFFF82
+:1046C000FFFFFFFFFF000000FFFFFFFFFFFFFF8076
+:1046D00000000000FFFFFFFFFFFFFF00000000FFE2
+:1046E000FFFFFFFFFFFF000000FFFFFFFFFFFFFFD7
+:1046F0008000000000FFFFFFFFFFFFFF0000000041
:1047000000000000000000000000000000000000A9
-:104710000000000000000000000000000000000099
-:104720000000000000000000000000000000000089
-:104730000000000000000000000000000000000079
-:104740000000000000000000000000000000000069
-:104750000000000000000000000000000000000059
-:104760000000000000000000000000000000000049
-:104770000000000000000000000000000000000039
-:104780000000000000000000000000000000000029
-:104790000000000000000000000000000000000019
-:1047A0000000000000000000000000000000000009
-:1047B00000000000000000000000000000000000F9
-:1047C00000000000000000000000000000000000E9
-:1047D00000000000000000000000000000000000D9
-:1047E00000000000000000000000000000000000C9
-:1047F00000000000000000000000000000000000B9
+:10471000000000000000000000073F3F3F3F3F3F18
+:104720003F3F0F000000003F3F3F3F3F3F3F3F3FC5
+:1047300001000000000001070F1F1F3F3F3F3E3EEA
+:104740003E3E3F3F1F1F0E00303E3F3F3F3F3F1F5B
+:1047500001000000000000033F3F3F3F3F3F3C009F
+:104760000003070F1F3F3F3F3F3E3E3F3F3F1F1E9F
+:10477000080000030F1F3F3F3F3F3F3E3F3F1C18D5
+:10478000000000000000000000070F1F1F3F3F3F18
+:104790003F3E3E3F3F3F3F1F1F0F0703000000000B
+:1047A000070F1F3F3F3F3F3E3F3F3F1C00000F1F93
+:1047B0003F3F3F3F3F3E3F1F1F3F3F3F3F3F3F0089
+:1047C000000000070F1F3F3F3F3F3F3E3F1F1F3F7F
+:1047D0003F3F3F3F3F000000003F3F3F3F3F3F3FE5
+:1047E0000000000003070F1F3F3F3F3F3E3E3F3F9B
+:1047F0003F1F1F0F0300000000000000000000002A
:1048000000000000000000000000000000000000A8
:104810000000000000000000000000000000000098
:104820000000000000000000000000000000000088
@@ -1171,8 +1171,82 @@
:104910000000000000000000000000000000000097
:104920000000000000000000000000000000000087
:104930000000000000000000000000000000000077
-:10494000604900080000002008000000C0010008C5
-:104950006849000808000020802B0000DC010008E6
-:084960000100000000127A00C2
+:104940000000000000000000000000000000000067
+:104950000000000000000000000000000000000057
+:104960000000000000000000000000000000000047
+:104970000000000000000000000000000000000037
+:104980000000000000000000000000000000000027
+:104990000000000000000000000000000000000017
+:1049A0000000000000000000000000000000000007
+:1049B00000000000000000000000000000000000F7
+:1049C00000000000000000000000000000000000E7
+:1049D00000000000000000000000000000000000D7
+:1049E00000000000000000000000000000000000C7
+:1049F00000000000000000000000000000000000B7
+:104A000000000000000000000000000000000000A6
+:104A10000000000000000000000000000000000096
+:104A20000000000000000000000000000000000086
+:104A30000000000000000000000000000000000076
+:104A40000000000000000000000000000000000066
+:104A50000000000000000000000000000000000056
+:104A60000000000000000000000000000000000046
+:104A70000000000000000000000000000000000036
+:104A80000000000000000000000000000000000026
+:104A90000000000000000000000000000000000016
+:104AA0000000000000000000000000000000000006
+:104AB00000000000000000000000000000000000F6
+:104AC00000000000000000000000000000000000E6
+:104AD00000000000000000000000000000000000D6
+:104AE00000000000000000000000000000000000C6
+:104AF00000000000000000000000000000000000B6
+:104B000000000000000000000000000000000000A5
+:104B10000000000000000000000000000000000095
+:104B20000000000000000000000000000000000085
+:104B30000000000000000000000000000000000075
+:104B40000000000000000000000000000000000065
+:104B50000000000000000000000000000000000055
+:104B60000000000000000000000000000000000045
+:104B70000000000000000000000000000000000035
+:104B80000000000000000000000000000000000025
+:104B90000000000000000000000000000000000015
+:104BA0000000000000000000000000000000000005
+:104BB00000000000000000000000000000000000F5
+:104BC00000000000000000000000000000000000E5
+:104BD00000000000000000000000000000000000D5
+:104BE00000000000000000000000000000000000C5
+:104BF00000000000000000000000000000000000B5
+:104C000000000000000000000000000000000000A4
+:104C10000000000000000000000000000000000094
+:104C20000000000000000000000000000000000084
+:104C30000000000000000000000000000000000074
+:104C40000000000000000000000000000000000064
+:104C50000000000000000000000000000000000054
+:104C60000000000000000000000000000000000044
+:104C70000000000000000000000000000000000034
+:104C80000000000000000000000000000000000024
+:104C90000000000000000000000000000000000014
+:104CA0000000000000000000000000000000000004
+:104CB00000000000000000000000000000000000F4
+:104CC00000000000000000000000000000000000E4
+:104CD00000000000000000000000000000000000D4
+:104CE00000000000000000000000000000000000C4
+:104CF00000000000000000000000000000000000B4
+:104D000000000000000000000000000000000000A3
+:104D10000000000000000000000000000000000093
+:104D20000000000000000000000000000000000083
+:104D30000000000000000000000000000000000073
+:104D40000000000000000000000000000000000063
+:104D50000000000000000000000000000000000053
+:104D60000000000000000000000000000000000043
+:104D70000000000000000000000000000000000033
+:104D80000000000000000000000000000000000023
+:104D90000000000000000000000000000000000013
+:104DA0000000000000000000000000000000000003
+:104DB00000000000000000000000000000000000F3
+:104DC00000000000000000000000000000000000E3
+:104DD00000000000000000000000000000000000D3
+:104DE000004E00080000002008000000E801000854
+:104DF000084E0008080000201841000008020008C2
+:084E00000100000000127A001D
:040000050800018569
:00000001FF
diff --git a/Example/EpaperModuleTest_AT32F403A/Src/main.c b/Example/EpaperModuleTest_AT32F403A/Src/main.c
index 90e036e..aa44f27 100644
--- a/Example/EpaperModuleTest_AT32F403A/Src/main.c
+++ b/Example/EpaperModuleTest_AT32F403A/Src/main.c
@@ -49,16 +49,25 @@ int main(void)
epd_init();
#ifdef EPD_BWR
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
-
epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
epd_paint_clear(EPD_COLOR_WHITE);
epd_paint_selectimage(image_red);
epd_paint_clear(EPD_COLOR_WHITE);
- epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
+ epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #endif
epd_display(image_bw, image_red);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -76,6 +85,10 @@ int main(void)
#ifdef EPD_29
epd_paint_showString(10, 0, (uint8_t *)&"2.9 Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
@@ -85,15 +98,20 @@ int main(void)
sprintf((char *)&text, ">> Hello World.");
epd_paint_showString(10, 71, text, EPD_FONT_SIZE24x12, EPD_COLOR_RED);
-#if 0
+#if 1
epd_paint_showString(10,100,(uint8_t *)&"AT32F403ACGU7 Example",EPD_FONT_SIZE16x8,EPD_COLOR_RED);
#else
epd_paint_drawRectangle(10, 103, EPD_H - 10, 116, EPD_COLOR_RED, 1);
#endif
epd_display(image_bw, image_red);
+
#else
- epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
@@ -102,7 +120,11 @@ int main(void)
epd_paint_showPicture((EPD_H - 200) / 2,(EPD_W - 64) / 2,200,64,gImage_5,EPD_COLOR_WHITE);
#else
epd_paint_clear(EPD_COLOR_WHITE);
- epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
+ epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #endif
#endif
epd_displayBW(image_bw);
@@ -131,7 +153,11 @@ int main(void)
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
-
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
#if 1
epd_paint_showString(10,100,(uint8_t *)&"AT32F403ACGU7 Example",EPD_FONT_SIZE16x8,EPD_COLOR_BLACK);
#else
diff --git a/Example/EpaperModuleTest_Arduino_ESP32/EpaperModuleTest_Arduino_ESP32.ino b/Example/EpaperModuleTest_Arduino_ESP32/EpaperModuleTest_Arduino_ESP32.ino
index 0c2b308..e73cd8d 100644
--- a/Example/EpaperModuleTest_Arduino_ESP32/EpaperModuleTest_Arduino_ESP32.ino
+++ b/Example/EpaperModuleTest_Arduino_ESP32/EpaperModuleTest_Arduino_ESP32.ino
@@ -20,6 +20,9 @@ GxEPD2_BW display(GxEPD2_213_BN(/*CS=5*/ 5
//GxEPD2_BW display(GxEPD2_290_BS(/*CS=5*/ 5, /*DC=*/ 0, /*RES=*/ 2, /*BUSY=*/ 15)); // DEPG0290BS 128x296, SSD1680
//GxEPD2_3C display(GxEPD2_290_C90c(/*CS=5*/ 5, /*DC=*/ 0, /*RES=*/ 2, /*BUSY=*/ 15)); // GDEM029C90 128x296, SSD1680
+// 4.2'' EPD Module
+//GxEPD2_BW display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RES=*/ 2, /*BUSY=*/ 15)); // 400x300, SSD1683
+
void setup()
{
display.init(115200,true,50,false);
diff --git a/Example/EpaperModuleTest_Arduino_ESP32C3/EpaperModuleTest_Arduino_ESP32C3.ino b/Example/EpaperModuleTest_Arduino_ESP32C3/EpaperModuleTest_Arduino_ESP32C3.ino
index 0da05e1..6a1db2a 100644
--- a/Example/EpaperModuleTest_Arduino_ESP32C3/EpaperModuleTest_Arduino_ESP32C3.ino
+++ b/Example/EpaperModuleTest_Arduino_ESP32C3/EpaperModuleTest_Arduino_ESP32C3.ino
@@ -20,6 +20,9 @@ GxEPD2_BW display(GxEPD2_213_BN(/*CS=5*/ S
//GxEPD2_BW display(GxEPD2_290_BS(/*CS=5*/ SS, /*DC=*/ 1, /*RES=*/ 2, /*BUSY=*/ 3)); // DEPG0290BS 128x296, SSD1680
//GxEPD2_3C display(GxEPD2_290_C90c(/*CS=5*/ SS, /*DC=*/ 1, /*RES=*/ 2, /*BUSY=*/ 3)); // GDEM029C90 128x296, SSD1680
+// 4.2'' EPD Module
+//GxEPD2_BW display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 1, /*RES=*/ 2, /*BUSY=*/ 3)); // 400x300, SSD1683
+
void setup()
{
pinMode(8, OUTPUT);
diff --git a/Example/EpaperModuleTest_Arduino_ESP8266/EpaperModuleTest_Arduino_ESP8266.ino b/Example/EpaperModuleTest_Arduino_ESP8266/EpaperModuleTest_Arduino_ESP8266.ino
index c8cb04d..4b4ba36 100644
--- a/Example/EpaperModuleTest_Arduino_ESP8266/EpaperModuleTest_Arduino_ESP8266.ino
+++ b/Example/EpaperModuleTest_Arduino_ESP8266/EpaperModuleTest_Arduino_ESP8266.ino
@@ -20,6 +20,9 @@ GxEPD2_BW display(GxEPD2_213_BN(/*CS=5*/ 1
//GxEPD2_BW display(GxEPD2_290_BS(/*CS=5*/ 15, /*DC=*/ 4, /*RES=*/ 5, /*BUSY=*/ 16)); // DEPG0290BS 128x296, SSD1680
//GxEPD2_3C display(GxEPD2_290_C90c(/*CS=5*/ 15, /*DC=*/ 4, /*RES=*/ 5, /*BUSY=*/ 16)); // GDEM029C90 128x296, SSD1680
+// 4.2'' EPD Module
+//GxEPD2_BW display(GxEPD2_420_GDEY042T81(/*CS=5*/ 15, /*DC=*/ 4, /*RES=*/ 5, /*BUSY=*/ 16)); // 400x300, SSD1683
+
void setup()
{
display.init(115200,true,50,false);
diff --git a/Example/EpaperModuleTest_CH32F103/Epaper/epaper.c b/Example/EpaperModuleTest_CH32F103/Epaper/epaper.c
index 7c8a477..abb4ef7 100644
--- a/Example/EpaperModuleTest_CH32F103/Epaper/epaper.c
+++ b/Example/EpaperModuleTest_CH32F103/Epaper/epaper.c
@@ -218,6 +218,7 @@ uint8_t epd_init(void)
if (epd_wait_busy())
return 1;
+ #if defined(EPD_29) || defined(EPD_213) || defined(EPD_154)
epd_write_reg(0x01); // Driver output control
#if defined(EPD_29) || defined(EPD_213)
epd_write_data(0x27);
@@ -261,6 +262,21 @@ uint8_t epd_init(void)
epd_write_reg(0x21); // Display update control
epd_write_data(0x00);
epd_write_data(0x80);
+ #endif
+
+ #elif defined(EPD_42)
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x40);
+ epd_write_data(0x00);
+ epd_write_reg(0x01); // Set MUX as 300
+ epd_write_data(0x2B);
+ epd_write_data(0x01);
+ epd_write_data(0x00);
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x01);
+ epd_write_reg(0x11); // data entry mode
+ epd_write_data(0x03); // X-mode
+ epd_address_set(0,0,EPD_W-1,EPD_H-1);
#endif
epd_write_reg(0x18); // Read built-in temperature sensor
@@ -288,6 +304,12 @@ uint8_t epd_init_partial(void)
}
_epd_write_data_over();
epd_cs_set();
+ #elif defined(EPD_42)
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x80);
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
#endif
return 0;
@@ -303,8 +325,13 @@ void epd_enter_deepsleepmode(uint8_t mode)
uint8_t epd_power_on(void)
{
+ #if defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xe0);
+ #else
epd_write_reg(0x22); // Display Update Control
epd_write_data(0xf8);
+ #endif
epd_write_reg(0x20); // Activate Display Update Sequence
return epd_wait_busy();
@@ -326,15 +353,20 @@ void epd_init_internalTempSensor(void)
epd_write_reg(0x1A);
epd_write_data(0x7F);
- epd_write_data(0xF0);
+// epd_write_data(0xF0);
}
void epd_update(void)
{
+
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xF4);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xF7);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xF7);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -344,10 +376,14 @@ void epd_update(void)
void epd_update_partial(void)
{
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xFC);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xFF);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xCC);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -355,6 +391,19 @@ void epd_update_partial(void)
epd_wait_busy();
}
+void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end)
+{
+ epd_write_reg(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+ epd_write_data((x_start>>3) & 0xFF);
+ epd_write_data((x_end>>3) & 0xFF);
+
+ epd_write_reg(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+ epd_write_data(y_start & 0xFF);
+ epd_write_data((y_start >> 8) & 0xFF);
+ epd_write_data(y_end & 0xFF);
+ epd_write_data((y_end >> 8) & 0xFF);
+}
+
void epd_setpos(uint16_t x, uint16_t y)
{
uint8_t _x;
@@ -364,8 +413,10 @@ void epd_setpos(uint16_t x, uint16_t y)
#ifdef EPD_154
_y = 199 - y;
- #else
+ #elif defined(EPD_29) || defined(EPD_213)
_y = 295 - y;
+ #elif defined(EPD_42)
+ _y = y;
#endif
epd_write_reg(0x4E); // set RAM x address count to 0;
@@ -386,6 +437,17 @@ void epd_writedata(uint8_t *Image1, uint32_t length)
epd_cs_set();
}
+void epd_writedata2(uint8_t data, uint32_t length)
+{
+ epd_cs_reset();
+ for (uint32_t j = 0; j < length; j++)
+ {
+ _epd_write_data(data);
+ }
+ _epd_write_data_over();
+ epd_cs_set();
+}
+
void epd_display(uint8_t *Image1, uint8_t *Image2)
{
uint32_t Width, Height, i, j;
@@ -414,6 +476,12 @@ void epd_display(uint8_t *Image1, uint8_t *Image2)
_epd_write_data_over();
epd_cs_set();
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
+
epd_update();
}
@@ -465,6 +533,11 @@ void epd_displayRED(uint8_t *Image)
epd_write_reg(0x26);
epd_writedata(Image, Width * Height);
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
epd_update();
}
diff --git a/Example/EpaperModuleTest_CH32F103/Epaper/epaper.h b/Example/EpaperModuleTest_CH32F103/Epaper/epaper.h
index 4cc7786..a1395a1 100644
--- a/Example/EpaperModuleTest_CH32F103/Epaper/epaper.h
+++ b/Example/EpaperModuleTest_CH32F103/Epaper/epaper.h
@@ -8,11 +8,12 @@ extern "C"
#include "ch32f10x.h"
+//#define EPD_42
//#define EPD_29
//#define EPD_213
//#define EPD_154
-#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154)
+#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154) && (!defined EPD_42)
#error EPD Type Undefine
#endif
@@ -31,6 +32,10 @@ extern "C"
#define EPD_H 200
#endif
+#ifdef EPD_42
+#define EPD_W 400
+#define EPD_H 300
+#endif
#define EPD_OK 0
#define EPD_ERROR 1
@@ -76,6 +81,7 @@ extern "C"
void epd_init_internalTempSensor(void);
void epd_update(void);
void epd_update_partial(void);
+ void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end);
void epd_setpos(uint16_t x, uint16_t y);
void epd_display(uint8_t *Image1, uint8_t *Image2);
void epd_displayBW(uint8_t *Image);
diff --git a/Example/EpaperModuleTest_CH32F103/Src/main.c b/Example/EpaperModuleTest_CH32F103/Src/main.c
index 12203da..09c9fdf 100644
--- a/Example/EpaperModuleTest_CH32F103/Src/main.c
+++ b/Example/EpaperModuleTest_CH32F103/Src/main.c
@@ -15,7 +15,7 @@
#include "bmp.h"
// define for White Black Red Epaper Module
-#define EPD_BWR
+//#define EPD_BWR
uint8_t image_bw[EPD_W_BUFF_SIZE * EPD_H];
#ifdef EPD_BWR
@@ -56,16 +56,25 @@ int main(void)
epd_init();
#ifdef EPD_BWR
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
-
epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
epd_paint_clear(EPD_COLOR_WHITE);
epd_paint_selectimage(image_red);
epd_paint_clear(EPD_COLOR_WHITE);
+
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #endif
epd_display(image_bw, image_red);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -83,6 +92,10 @@ int main(void)
#ifdef EPD_29
epd_paint_showString(10, 0, (uint8_t *)&"2.9 Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
@@ -99,8 +112,13 @@ int main(void)
#endif
epd_display(image_bw, image_red);
+
+#else
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
#else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
@@ -109,8 +127,12 @@ int main(void)
epd_paint_showPicture((EPD_H - 200) / 2,(EPD_W - 64) / 2,200,64,gImage_5,EPD_COLOR_WHITE);
#else
epd_paint_clear(EPD_COLOR_WHITE);
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
#endif
+ #endif
epd_displayBW(image_bw);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -138,11 +160,15 @@ int main(void)
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
-
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
#if 1
epd_paint_showString(10,100,(uint8_t *)&"CH32F103C8T6 Example",EPD_FONT_SIZE16x8,EPD_COLOR_BLACK);
#else
- epd_paint_drawRectangle(10, 103, EPD_H - 10, 116, EPD_COLOR_BLACK, 1);
+ epd_paint_drawRectangle(10, EPD_W-20, EPD_H - 10, EPD_W-6, EPD_COLOR_BLACK, 1);
#endif
sprintf((char *)&text, ">> Partial Mode");
diff --git a/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.c b/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.c
index cc5012c..c4496a5 100644
--- a/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.c
+++ b/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.c
@@ -218,6 +218,7 @@ uint8_t epd_init(void)
if (epd_wait_busy())
return 1;
+ #if defined(EPD_29) || defined(EPD_213) || defined(EPD_154)
epd_write_reg(0x01); // Driver output control
#if defined(EPD_29) || defined(EPD_213)
epd_write_data(0x27);
@@ -261,6 +262,21 @@ uint8_t epd_init(void)
epd_write_reg(0x21); // Display update control
epd_write_data(0x00);
epd_write_data(0x80);
+ #endif
+
+ #elif defined(EPD_42)
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x40);
+ epd_write_data(0x00);
+ epd_write_reg(0x01); // Set MUX as 300
+ epd_write_data(0x2B);
+ epd_write_data(0x01);
+ epd_write_data(0x00);
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x01);
+ epd_write_reg(0x11); // data entry mode
+ epd_write_data(0x03); // X-mode
+ epd_address_set(0,0,EPD_W-1,EPD_H-1);
#endif
epd_write_reg(0x18); // Read built-in temperature sensor
@@ -288,6 +304,12 @@ uint8_t epd_init_partial(void)
}
_epd_write_data_over();
epd_cs_set();
+ #elif defined(EPD_42)
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x80);
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
#endif
return 0;
@@ -303,8 +325,13 @@ void epd_enter_deepsleepmode(uint8_t mode)
uint8_t epd_power_on(void)
{
+ #if defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xe0);
+ #else
epd_write_reg(0x22); // Display Update Control
epd_write_data(0xf8);
+ #endif
epd_write_reg(0x20); // Activate Display Update Sequence
return epd_wait_busy();
@@ -326,15 +353,20 @@ void epd_init_internalTempSensor(void)
epd_write_reg(0x1A);
epd_write_data(0x7F);
- epd_write_data(0xF0);
+// epd_write_data(0xF0);
}
void epd_update(void)
{
+
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xF4);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xF7);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xF7);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -344,10 +376,14 @@ void epd_update(void)
void epd_update_partial(void)
{
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xFC);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xFF);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xCC);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -355,6 +391,19 @@ void epd_update_partial(void)
epd_wait_busy();
}
+void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end)
+{
+ epd_write_reg(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+ epd_write_data((x_start>>3) & 0xFF);
+ epd_write_data((x_end>>3) & 0xFF);
+
+ epd_write_reg(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+ epd_write_data(y_start & 0xFF);
+ epd_write_data((y_start >> 8) & 0xFF);
+ epd_write_data(y_end & 0xFF);
+ epd_write_data((y_end >> 8) & 0xFF);
+}
+
void epd_setpos(uint16_t x, uint16_t y)
{
uint8_t _x;
@@ -364,8 +413,10 @@ void epd_setpos(uint16_t x, uint16_t y)
#ifdef EPD_154
_y = 199 - y;
- #else
+ #elif defined(EPD_29) || defined(EPD_213)
_y = 295 - y;
+ #elif defined(EPD_42)
+ _y = y;
#endif
epd_write_reg(0x4E); // set RAM x address count to 0;
@@ -386,6 +437,17 @@ void epd_writedata(uint8_t *Image1, uint32_t length)
epd_cs_set();
}
+void epd_writedata2(uint8_t data, uint32_t length)
+{
+ epd_cs_reset();
+ for (uint32_t j = 0; j < length; j++)
+ {
+ _epd_write_data(data);
+ }
+ _epd_write_data_over();
+ epd_cs_set();
+}
+
void epd_display(uint8_t *Image1, uint8_t *Image2)
{
uint32_t Width, Height, i, j;
@@ -414,6 +476,12 @@ void epd_display(uint8_t *Image1, uint8_t *Image2)
_epd_write_data_over();
epd_cs_set();
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
+
epd_update();
}
@@ -465,6 +533,11 @@ void epd_displayRED(uint8_t *Image)
epd_write_reg(0x26);
epd_writedata(Image, Width * Height);
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
epd_update();
}
diff --git a/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.h b/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.h
index be64e0f..769d9e8 100644
--- a/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.h
+++ b/Example/EpaperModuleTest_CH32V103/User/Epaper/epaper.h
@@ -8,11 +8,12 @@ extern "C"
#include "ch32v10x.h"
+//#define EPD_42
//#define EPD_29
//#define EPD_213
//#define EPD_154
-#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154)
+#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154) && (!defined EPD_42)
#error EPD Type Undefine
#endif
@@ -31,6 +32,10 @@ extern "C"
#define EPD_H 200
#endif
+#ifdef EPD_42
+#define EPD_W 400
+#define EPD_H 300
+#endif
#define EPD_OK 0
#define EPD_ERROR 1
@@ -76,6 +81,7 @@ extern "C"
void epd_init_internalTempSensor(void);
void epd_update(void);
void epd_update_partial(void);
+ void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end);
void epd_setpos(uint16_t x, uint16_t y);
void epd_display(uint8_t *Image1, uint8_t *Image2);
void epd_displayBW(uint8_t *Image);
diff --git a/Example/EpaperModuleTest_CH32V103/User/main.c b/Example/EpaperModuleTest_CH32V103/User/main.c
index 39f8ad1..03a87aa 100644
--- a/Example/EpaperModuleTest_CH32V103/User/main.c
+++ b/Example/EpaperModuleTest_CH32V103/User/main.c
@@ -15,7 +15,7 @@
#include "bmp.h"
// define for White Black Red Epaper Module
-#define EPD_BWR
+//#define EPD_BWR
uint8_t image_bw[EPD_W_BUFF_SIZE * EPD_H];
#ifdef EPD_BWR
@@ -56,16 +56,25 @@ int main(void)
epd_init();
#ifdef EPD_BWR
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
-
epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
epd_paint_clear(EPD_COLOR_WHITE);
epd_paint_selectimage(image_red);
epd_paint_clear(EPD_COLOR_WHITE);
+
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #endif
epd_display(image_bw, image_red);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -83,6 +92,10 @@ int main(void)
#ifdef EPD_29
epd_paint_showString(10, 0, (uint8_t *)&"2.9 Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
@@ -99,8 +112,13 @@ int main(void)
#endif
epd_display(image_bw, image_red);
+
+#else
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
#else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
@@ -109,8 +127,12 @@ int main(void)
epd_paint_showPicture((EPD_H - 200) / 2,(EPD_W - 64) / 2,200,64,gImage_5,EPD_COLOR_WHITE);
#else
epd_paint_clear(EPD_COLOR_WHITE);
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
#endif
+ #endif
epd_displayBW(image_bw);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -138,11 +160,15 @@ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SI
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
-
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
#if 1
epd_paint_showString(10,100,(uint8_t *)&"CH32V103C8T6 Example",EPD_FONT_SIZE16x8,EPD_COLOR_BLACK);
#else
- epd_paint_drawRectangle(10, 103, EPD_H - 10, 116, EPD_COLOR_BLACK, 1);
+ epd_paint_drawRectangle(10, EPD_W-20, EPD_H - 10, EPD_W-6, EPD_COLOR_BLACK, 1);
#endif
sprintf((char *)&text, ">> Partial Mode");
diff --git a/Example/EpaperModuleTest_GD32F103/Epaper/epaper.c b/Example/EpaperModuleTest_GD32F103/Epaper/epaper.c
index 13c5f17..6e4cb34 100644
--- a/Example/EpaperModuleTest_GD32F103/Epaper/epaper.c
+++ b/Example/EpaperModuleTest_GD32F103/Epaper/epaper.c
@@ -208,6 +208,7 @@ uint8_t epd_init(void)
if (epd_wait_busy())
return 1;
+ #if defined(EPD_29) || defined(EPD_213) || defined(EPD_154)
epd_write_reg(0x01); // Driver output control
#if defined(EPD_29) || defined(EPD_213)
epd_write_data(0x27);
@@ -251,6 +252,21 @@ uint8_t epd_init(void)
epd_write_reg(0x21); // Display update control
epd_write_data(0x00);
epd_write_data(0x80);
+ #endif
+
+ #elif defined(EPD_42)
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x40);
+ epd_write_data(0x00);
+ epd_write_reg(0x01); // Set MUX as 300
+ epd_write_data(0x2B);
+ epd_write_data(0x01);
+ epd_write_data(0x00);
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x01);
+ epd_write_reg(0x11); // data entry mode
+ epd_write_data(0x03); // X-mode
+ epd_address_set(0,0,EPD_W-1,EPD_H-1);
#endif
epd_write_reg(0x18); // Read built-in temperature sensor
@@ -278,6 +294,12 @@ uint8_t epd_init_partial(void)
}
_epd_write_data_over();
epd_cs_set();
+ #elif defined(EPD_42)
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x80);
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
#endif
return 0;
@@ -293,8 +315,13 @@ epd_power_off();
uint8_t epd_power_on(void)
{
+ #if defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xe0);
+ #else
epd_write_reg(0x22); // Display Update Control
epd_write_data(0xf8);
+ #endif
epd_write_reg(0x20); // Activate Display Update Sequence
return epd_wait_busy();
@@ -316,15 +343,20 @@ void epd_init_internalTempSensor(void)
epd_write_reg(0x1A);
epd_write_data(0x7F);
- epd_write_data(0xF0);
+// epd_write_data(0xF0);
}
void epd_update(void)
{
+
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xF4);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xF7);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xF7);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -334,10 +366,14 @@ void epd_update(void)
void epd_update_partial(void)
{
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xFC);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xFF);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xCC);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -345,6 +381,19 @@ void epd_update_partial(void)
epd_wait_busy();
}
+void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end)
+{
+ epd_write_reg(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+ epd_write_data((x_start>>3) & 0xFF);
+ epd_write_data((x_end>>3) & 0xFF);
+
+ epd_write_reg(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+ epd_write_data(y_start & 0xFF);
+ epd_write_data((y_start >> 8) & 0xFF);
+ epd_write_data(y_end & 0xFF);
+ epd_write_data((y_end >> 8) & 0xFF);
+}
+
void epd_setpos(uint16_t x, uint16_t y)
{
uint8_t _x;
@@ -354,8 +403,10 @@ void epd_setpos(uint16_t x, uint16_t y)
#ifdef EPD_154
_y = 199 - y;
- #else
+ #elif defined(EPD_29) || defined(EPD_213)
_y = 295 - y;
+ #elif defined(EPD_42)
+ _y = y;
#endif
epd_write_reg(0x4E); // set RAM x address count to 0;
@@ -376,6 +427,17 @@ void epd_writedata(uint8_t *Image1, uint32_t length)
epd_cs_set();
}
+void epd_writedata2(uint8_t data, uint32_t length)
+{
+ epd_cs_reset();
+ for (uint32_t j = 0; j < length; j++)
+ {
+ _epd_write_data(data);
+ }
+ _epd_write_data_over();
+ epd_cs_set();
+}
+
void epd_display(uint8_t *Image1, uint8_t *Image2)
{
uint32_t Width, Height, i, j;
@@ -404,6 +466,12 @@ void epd_display(uint8_t *Image1, uint8_t *Image2)
_epd_write_data_over();
epd_cs_set();
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
+
epd_update();
}
@@ -455,6 +523,11 @@ void epd_displayRED(uint8_t *Image)
epd_write_reg(0x26);
epd_writedata(Image, Width * Height);
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
epd_update();
}
diff --git a/Example/EpaperModuleTest_GD32F103/Epaper/epaper.h b/Example/EpaperModuleTest_GD32F103/Epaper/epaper.h
index f9dbc60..1653675 100644
--- a/Example/EpaperModuleTest_GD32F103/Epaper/epaper.h
+++ b/Example/EpaperModuleTest_GD32F103/Epaper/epaper.h
@@ -8,11 +8,12 @@ extern "C"
#include "gd32f10x.h"
+//#define EPD_42
//#define EPD_29
//#define EPD_213
//#define EPD_154
-#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154)
+#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154) && (!defined EPD_42)
#error EPD Type Undefine
#endif
@@ -31,6 +32,10 @@ extern "C"
#define EPD_H 200
#endif
+#ifdef EPD_42
+#define EPD_W 400
+#define EPD_H 300
+#endif
#define EPD_OK 0
#define EPD_ERROR 1
@@ -76,6 +81,7 @@ extern "C"
void epd_init_internalTempSensor(void);
void epd_update(void);
void epd_update_partial(void);
+ void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end);
void epd_setpos(uint16_t x, uint16_t y);
void epd_display(uint8_t *Image1, uint8_t *Image2);
void epd_displayBW(uint8_t *Image);
diff --git a/Example/EpaperModuleTest_GD32F103/Src/main.c b/Example/EpaperModuleTest_GD32F103/Src/main.c
index c0bd4a2..b41e445 100644
--- a/Example/EpaperModuleTest_GD32F103/Src/main.c
+++ b/Example/EpaperModuleTest_GD32F103/Src/main.c
@@ -18,7 +18,7 @@
#include "bmp.h"
// define for White Black Red Epaper Module
-#define EPD_BWR
+//#define EPD_BWR
uint8_t image_bw[EPD_W_BUFF_SIZE * EPD_H];
#ifdef EPD_BWR
@@ -56,16 +56,25 @@ int main(void)
epd_init();
#ifdef EPD_BWR
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
-
epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
epd_paint_clear(EPD_COLOR_WHITE);
epd_paint_selectimage(image_red);
epd_paint_clear(EPD_COLOR_WHITE);
+
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #endif
epd_display(image_bw, image_red);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -83,6 +92,10 @@ int main(void)
#ifdef EPD_29
epd_paint_showString(10, 0, (uint8_t *)&"2.9 Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
@@ -99,8 +112,13 @@ int main(void)
#endif
epd_display(image_bw, image_red);
+
+#else
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
#else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
@@ -109,8 +127,12 @@ int main(void)
epd_paint_showPicture((EPD_H - 200) / 2,(EPD_W - 64) / 2,200,64,gImage_5,EPD_COLOR_WHITE);
#else
epd_paint_clear(EPD_COLOR_WHITE);
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
#endif
+ #endif
epd_displayBW(image_bw);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -138,11 +160,15 @@ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SI
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
-
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
#if 1
epd_paint_showString(10,100,(uint8_t *)&"GD32F103CBT6 Example",EPD_FONT_SIZE16x8,EPD_COLOR_BLACK);
#else
- epd_paint_drawRectangle(10, 103, EPD_H - 10, 116, EPD_COLOR_BLACK, 1);
+ epd_paint_drawRectangle(10, EPD_W-20, EPD_H - 10, EPD_W-6, EPD_COLOR_BLACK, 1);
#endif
sprintf((char *)&text, ">> Partial Mode");
diff --git a/Example/EpaperModuleTest_GD32F303/Epaper/epaper.c b/Example/EpaperModuleTest_GD32F303/Epaper/epaper.c
index 3902730..e8a1780 100644
--- a/Example/EpaperModuleTest_GD32F303/Epaper/epaper.c
+++ b/Example/EpaperModuleTest_GD32F303/Epaper/epaper.c
@@ -208,6 +208,7 @@ uint8_t epd_init(void)
if (epd_wait_busy())
return 1;
+ #if defined(EPD_29) || defined(EPD_213) || defined(EPD_154)
epd_write_reg(0x01); // Driver output control
#if defined(EPD_29) || defined(EPD_213)
epd_write_data(0x27);
@@ -251,6 +252,21 @@ uint8_t epd_init(void)
epd_write_reg(0x21); // Display update control
epd_write_data(0x00);
epd_write_data(0x80);
+ #endif
+
+ #elif defined(EPD_42)
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x40);
+ epd_write_data(0x00);
+ epd_write_reg(0x01); // Set MUX as 300
+ epd_write_data(0x2B);
+ epd_write_data(0x01);
+ epd_write_data(0x00);
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x01);
+ epd_write_reg(0x11); // data entry mode
+ epd_write_data(0x03); // X-mode
+ epd_address_set(0,0,EPD_W-1,EPD_H-1);
#endif
epd_write_reg(0x18); // Read built-in temperature sensor
@@ -278,6 +294,12 @@ uint8_t epd_init_partial(void)
}
_epd_write_data_over();
epd_cs_set();
+ #elif defined(EPD_42)
+ epd_write_reg(0x3C); //BorderWavefrom
+ epd_write_data(0x80);
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
#endif
return 0;
@@ -293,8 +315,13 @@ epd_power_off();
uint8_t epd_power_on(void)
{
+ #if defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xe0);
+ #else
epd_write_reg(0x22); // Display Update Control
epd_write_data(0xf8);
+ #endif
epd_write_reg(0x20); // Activate Display Update Sequence
return epd_wait_busy();
@@ -316,15 +343,20 @@ void epd_init_internalTempSensor(void)
epd_write_reg(0x1A);
epd_write_data(0x7F);
- epd_write_data(0xF0);
+// epd_write_data(0xF0);
}
void epd_update(void)
{
+
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xF4);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xF7);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xF7);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -334,10 +366,14 @@ void epd_update(void)
void epd_update_partial(void)
{
+ #ifdef EPD_154
epd_write_reg(0x22); // Display Update Control
-#ifdef EPD_154
epd_write_data(0xFC);
+ #elif defined EPD_42
+ epd_write_reg(0x22); // Display Update Control
+ epd_write_data(0xFF);
#else
+ epd_write_reg(0x22); // Display Update Control
epd_write_data(0xCC);
#endif
epd_write_reg(0x20); // Activate Display Update Sequence
@@ -345,6 +381,19 @@ void epd_update_partial(void)
epd_wait_busy();
}
+void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end)
+{
+ epd_write_reg(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+ epd_write_data((x_start>>3) & 0xFF);
+ epd_write_data((x_end>>3) & 0xFF);
+
+ epd_write_reg(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+ epd_write_data(y_start & 0xFF);
+ epd_write_data((y_start >> 8) & 0xFF);
+ epd_write_data(y_end & 0xFF);
+ epd_write_data((y_end >> 8) & 0xFF);
+}
+
void epd_setpos(uint16_t x, uint16_t y)
{
uint8_t _x;
@@ -354,8 +403,10 @@ void epd_setpos(uint16_t x, uint16_t y)
#ifdef EPD_154
_y = 199 - y;
- #else
+ #elif defined(EPD_29) || defined(EPD_213)
_y = 295 - y;
+ #elif defined(EPD_42)
+ _y = y;
#endif
epd_write_reg(0x4E); // set RAM x address count to 0;
@@ -376,6 +427,17 @@ void epd_writedata(uint8_t *Image1, uint32_t length)
epd_cs_set();
}
+void epd_writedata2(uint8_t data, uint32_t length)
+{
+ epd_cs_reset();
+ for (uint32_t j = 0; j < length; j++)
+ {
+ _epd_write_data(data);
+ }
+ _epd_write_data_over();
+ epd_cs_set();
+}
+
void epd_display(uint8_t *Image1, uint8_t *Image2)
{
uint32_t Width, Height, i, j;
@@ -404,6 +466,12 @@ void epd_display(uint8_t *Image1, uint8_t *Image2)
_epd_write_data_over();
epd_cs_set();
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
+
epd_update();
}
@@ -455,6 +523,11 @@ void epd_displayRED(uint8_t *Image)
epd_write_reg(0x26);
epd_writedata(Image, Width * Height);
+ #if defined EPD_42
+ epd_write_reg(0x21); // Display Update Controll
+ epd_write_data(0x00); // RED normal
+ epd_write_data(0x00); // single chip application
+ #endif
epd_update();
}
diff --git a/Example/EpaperModuleTest_GD32F303/Epaper/epaper.h b/Example/EpaperModuleTest_GD32F303/Epaper/epaper.h
index 40eef6c..c8df27e 100644
--- a/Example/EpaperModuleTest_GD32F303/Epaper/epaper.h
+++ b/Example/EpaperModuleTest_GD32F303/Epaper/epaper.h
@@ -8,11 +8,12 @@ extern "C"
#include "gd32f30x.h"
+//#define EPD_42
//#define EPD_29
//#define EPD_213
//#define EPD_154
-#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154)
+#if (!defined EPD_29) && (!defined EPD_213) && (!defined EPD_154) && (!defined EPD_42)
#error EPD Type Undefine
#endif
@@ -31,6 +32,10 @@ extern "C"
#define EPD_H 200
#endif
+#ifdef EPD_42
+#define EPD_W 400
+#define EPD_H 300
+#endif
#define EPD_OK 0
#define EPD_ERROR 1
@@ -76,6 +81,7 @@ extern "C"
void epd_init_internalTempSensor(void);
void epd_update(void);
void epd_update_partial(void);
+ void epd_address_set(uint16_t x_start,uint16_t y_start,uint16_t x_end,uint16_t y_end);
void epd_setpos(uint16_t x, uint16_t y);
void epd_display(uint8_t *Image1, uint8_t *Image2);
void epd_displayBW(uint8_t *Image);
diff --git a/Example/EpaperModuleTest_GD32F303/Src/main.c b/Example/EpaperModuleTest_GD32F303/Src/main.c
index a54d22d..7e517fb 100644
--- a/Example/EpaperModuleTest_GD32F303/Src/main.c
+++ b/Example/EpaperModuleTest_GD32F303/Src/main.c
@@ -24,7 +24,7 @@ void jump_to_app(uint32_t addr);
#include "bmp.h"
// define for White Black Red Epaper Module
-#define EPD_BWR
+//#define EPD_BWR
uint8_t image_bw[EPD_W_BUFF_SIZE * EPD_H];
#ifdef EPD_BWR
@@ -82,16 +82,25 @@ int main(void)
epd_init();
#ifdef EPD_BWR
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
+ #else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
-
epd_paint_newimage(image_red, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
epd_paint_clear(EPD_COLOR_WHITE);
epd_paint_selectimage(image_red);
epd_paint_clear(EPD_COLOR_WHITE);
+
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #endif
epd_display(image_bw, image_red);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -109,6 +118,10 @@ int main(void)
#ifdef EPD_29
epd_paint_showString(10, 0, (uint8_t *)&"2.9 Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
@@ -125,8 +138,13 @@ int main(void)
#endif
epd_display(image_bw, image_red);
+
+#else
+ #ifdef EPD_42
+ epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_270, EPD_COLOR_WHITE);
#else
epd_paint_newimage(image_bw, EPD_W, EPD_H, EPD_ROTATE_180, EPD_COLOR_WHITE);
+ #endif
epd_paint_selectimage(image_bw);
@@ -135,8 +153,12 @@ int main(void)
epd_paint_showPicture((EPD_H - 200) / 2,(EPD_W - 64) / 2,200,64,gImage_5,EPD_COLOR_WHITE);
#else
epd_paint_clear(EPD_COLOR_WHITE);
+ #ifdef EPD_42
+ epd_paint_showPicture((EPD_W - 250) / 2, (EPD_H - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
+ #else
epd_paint_showPicture((EPD_H - 250) / 2, (EPD_W - 122) / 2, 250, 122, gImage_4, EPD_COLOR_WHITE);
#endif
+ #endif
epd_displayBW(image_bw);
epd_enter_deepsleepmode(EPD_DEEPSLEEP_MODE1);
@@ -164,11 +186,15 @@ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SI
epd_paint_showString(10, 50, (uint8_t *)&"with 296 x 128 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
#endif
-
+#ifdef EPD_42
+ epd_paint_showString(10, 0, (uint8_t *)&"4.2 Inch Epaper Module", EPD_FONT_SIZE24x12, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 50, (uint8_t *)&"with 400 x 300 resolution", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+ epd_paint_showString(10, 29, (uint8_t *)&"Designed By WeAct Studio", EPD_FONT_SIZE16x8, EPD_COLOR_BLACK);
+#endif
#if 1
epd_paint_showString(10,100,(uint8_t *)&"GD32F303CCT6 Example",EPD_FONT_SIZE16x8,EPD_COLOR_BLACK);
#else
- epd_paint_drawRectangle(10, 103, EPD_H - 10, 116, EPD_COLOR_BLACK, 1);
+ epd_paint_drawRectangle(10, EPD_W-20, EPD_H - 10, EPD_W-6, EPD_COLOR_BLACK, 1);
#endif
sprintf((char *)&text, ">> Partial Mode");