Posted on Leave a comment

การใช้งาน e-paper 2.13 inch 250×122 pixel White-Black-Red

ในบทความนี้จะเป็นการใช้งาน e-paper ง่าย ๆ ไม่ใช้ RAM เยอะ และใช้ library แค่ SPI เท่านั้น

สิ่งที่ต้องมี

การต่อสาย

Arduino NanoE-paper
5VVCC
GNDGND
11SDI
13SCLK
10CS
9D/C
8Reset
7Busy
Arduino Nano and E-paper connecting table
Arduino Nano and E-paper wiring

ขั้นตอน

ขั้นตอนการใช้งาน ก็มีแค่ 4 ขั้นตอนง่าย ๆ คือ อันดับแรก เราต้องสร้างภาพที่เราต้องการแบบเต็มจอ (screen) เสียก่อน แล้วนำภาพนั้นไปแปลงเป็นตัวเลข จากนั้นก็ทำตัวเลขเหล่านั้นมาใส่ลง file แล้วโปรแกรมลง microcontroller ก็เป็นอันเสร็จเรียบร้อย

ขั้นตอนการใช้ e-paper

สร้างภาพแบบเต็ม screen

เนื่องจาก screen นี้มีขนาด 250×122 pixel โดยมีสามสี คือ ขาว ดำ และ แดง ดังนั้นเราก็จะต้องสร้างภาพที่มีขนาดและสีตามนี้ (ในที่นี้จะไม่กล่าวถึงวิธีทำภาพ)

ภาพที่ต้องการแสดงบน screen (mavigo_bwr.png)

เมื่อได้ภาพที่ต้องการแล้ว ก็ทำการแบ่งเป็น 2 ภาพ คือ ภาพที่เป็นสีดำล้วน กับสีแดงล้วน (เนื่องจาก memory สำหรับภาพสีดำ กับสีแดงใน e-paper นั้นจะแยกกัน) โดยให้ภาพอยู่ในรูปแบบของ JPG, JPEG, PNG, หรือ BMP

mavigo_bw.png
mavigo_r.png

เปลี่ยนภาพให้เป็นตัวเลข

ในการเปลี่ยนภาพให้เป็นตัวเลข ขอแนะนำเว็บของผู้ผลิต screen นั่นคือ good-display.com ซึ่งที่จริง เค้ามีโปรแกรมแบบไม่ online ให้ใช้ด้วย แต่ในที่นี้จะแนะนำแบบ online เท่านั้น เมื่อเปิดหน้าเว็บแล้วให้ใส่ข้อมูลดังนี้

1. เลือก screen model 2.13 และ GDEH213Z98 แล้ว check confirm

2. กด “Choose Files” แล้วเลือก file ภาพสีดำที่เตรียมไว้

3. ตรวจสอบว่า Preview ถูกต้องหรือไม่ โดยที่จะเป็นภาพกลับด้าน ถ้าไม่ถูกต้อง ลองตรวจสอบชนิดของ file, ขนาดของภาพ หรือนำ alpha channel ออกจากภาพ แล้วค่อย upload อีกครั้ง

4. เลือก Output Type: เป็นแบบ “Plain” , Pattern: “Horizontal -1 bit per pixel” แล้วกด “Output” ก็จะได้ ตัวเลขออกมา แล้วกด copy

นำตัวเลขที่ได้ใส่ลง file

เมื่อได้ตัวเลขแล้ว เราก็นำตัวเลขมาใส่ file โดยที่ file จะมีรูปแบบด้านล่าง (รูปแบบ file อ้างอิงมาจาก good-display.com) โดยให้วางตัวเลขที่ copy มานั้น ใส่ลงใน array ตัวแรก ซึ่งเตรียมไว้สำหรับภาพสีดำ จากนั้น ก็กลับไปที่เว็บอีกครั้ง โดยคราวนี้ทำเหมือนเดิม แต่เลือกภาพสีแดงแทน แล้วนำตัวเลขที่ได้มาใส่ลงใน array ที่สอง (ที่จริงเว็บรองรับที่จะทำการ convert พร้อมกันทีละ 2 ภาพ แต่เพื่อลดโอกาสสับสน จึงให้ทำทีละภาพ)

#include <avr/pgmspace.h>
const unsigned char gImage_BW[4000] PROGMEM= { /* For black image */


};

const unsigned char gImage_R[4000] PROGMEM= { /* For red image */


};
avr/pgmspace.h เป็น library ช่วยในการจัดการ memory สำหรับ microcontroller ตระกูล avr จะเห็นว่า เราประกาศ array แล้วมี keyword “PROGMEM” ด้วย นั่นเป็นการบอกให้ compiler นำตัวแปลนี้ใส่ลงใน Flash memory แทนที่จะเป็น RAM เหมือนตัวแปลอื่น ๆ ทำให้ประหยัด RAM ไปได้ ถ้าเอา PROGMEM ออก compiler ก็จะฟ้องว่า RAM ไม่พอ เพราะ ATmega328p มี RAM แค่ 2k byte แต่เราประกาศตัวแปลตัวละ 4k byte เลยทีเดียว 

เมื่อใส่ตัวเลขลงใน array ทั้งสองตัวเรียบร้อยแล้วจะได้ file ลักษณะด้านล่างนี้ ต่อไปให้ save file ในชื่อ mavigo_demo.h เก็บไว้ที่เดียวกับ file ที่เก็บ code (___.ino) ถ้าเก็บไว้คนละที่กัน ตัว code จะเรียกหาไม่เจอ

#include <avr/pgmspace.h>
const unsigned char gImage_BW[4000] PROGMEM= { /* For black image */
// 'mavigo_bw', 122x250px
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x3f, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x7f, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xf0, 0x07, 0x1e, 0x00, 0x00, 0x01, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xe0, 0x07, 0x07, 0x00, 0x00, 0x01, 0xc0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xe0, 0x0f, 0x00, 0xe0, 0x00, 0x01, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xc0, 0x1f, 0x00, 0x1c, 0x00, 0x01, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xc0, 0x1f, 0x00, 0x07, 0x00, 0x01, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xc0, 0x3f, 0x00, 0x00, 0xe0, 0x01, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x3f, 0x00, 0x00, 0x1c, 0x01, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x3f, 0x80, 0x00, 0x03, 0x01, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x7f, 0xe0, 0x00, 0x00, 0xff, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x7f, 0xfc, 0x00, 0x00, 0x1f, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x7f, 0xff, 0x00, 0x00, 0x03, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x00, 0x7f, 0xff, 0xe0, 0x00, 0x01, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x00, 0x7f, 0xff, 0xfc, 0x00, 0x01, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0xfc, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x00, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xfc, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x00, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x00, 0x7f, 0xff, 0xf0, 0x00, 0x01, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x7f, 0xff, 0xc0, 0x00, 0x03, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x7f, 0xfe, 0x00, 0x00, 0x0f, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x7f, 0xf0, 0x00, 0x00, 0x7f, 0xfc, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x7f, 0xc0, 0x00, 0x01, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0x80, 0x3f, 0x00, 0x00, 0x0e, 0x01, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xc0, 0x3f, 0x00, 0x00, 0x70, 0x01, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xc0, 0x1f, 0x00, 0x01, 0xc0, 0x01, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xc0, 0x1f, 0x00, 0x0e, 0x00, 0x01, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xe0, 0x0f, 0x00, 0x70, 0x00, 0x01, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xe0, 0x0f, 0x01, 0xc0, 0x00, 0x01, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xf0, 0x07, 0x8e, 0x00, 0x00, 0x01, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xf0, 0x03, 0xfc, 0x00, 0x00, 0x01, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xf8, 0x00, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x7f, 0xff, 0xff, 0xfc, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0x80, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0x80, 0x00, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x0f, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xe0, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x8e, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x04, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xfe, 0x08, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xfe, 0x18, 0x63, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xfe, 0x18, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xc0, 0x00, 0x1f, 0xff, 0xfe, 0x10, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x0e, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0xfe, 0x01, 0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x7e, 0x01, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x06, 0x01, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x07, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x0f, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x0f, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x07, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xe0, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xe0, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x0f, 0xff, 0xff, 0x9f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x01, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x07, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, 0xe3, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xfc, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x80, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xf8, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xfe, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x80, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x1c, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x0c, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x04, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x04, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x02, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x0f, 0x86, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x0f, 0x87, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x0f, 0x86, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x3c, 0xfc, 0x30, 0x06, 0x00, 0x0f, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x3c, 0xfc, 0x30, 0x06, 0x00, 0x0f, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf9, 0xff, 0x30, 0xff, 0x39, 0xfe, 0x7f, 0xcf, 0xc0, 
0xff, 0xfc, 0x00, 0x3e, 0x00, 0x1f, 0xff, 0xf9, 0xff, 0x30, 0xff, 0x39, 0xfe, 0x7f, 0xcf, 0xc0, 
0xff, 0xfc, 0x01, 0xff, 0xc0, 0x1f, 0xff, 0xf9, 0x81, 0x30, 0xc3, 0x37, 0x9e, 0x60, 0x4f, 0xc0, 
0xff, 0xf8, 0x03, 0xff, 0xe0, 0x0f, 0xff, 0xf9, 0x81, 0x30, 0xc3, 0x37, 0x9e, 0x60, 0x4f, 0xc0, 
0xff, 0xf8, 0x07, 0xff, 0xf0, 0x0f, 0xff, 0xf9, 0x81, 0x33, 0xfc, 0xc0, 0x7e, 0x60, 0x4f, 0xc0, 
0xff, 0xf8, 0x07, 0xff, 0xf0, 0x0f, 0xff, 0xf9, 0x81, 0x33, 0xfc, 0xc0, 0x7e, 0x60, 0x4f, 0xc0, 
0xff, 0xf8, 0x0f, 0xff, 0xf8, 0x0f, 0xff, 0xf9, 0x81, 0x30, 0xcc, 0x08, 0x7e, 0x60, 0x4f, 0xc0, 
0xff, 0xf8, 0x0f, 0xc0, 0x78, 0x0f, 0xff, 0xf9, 0x81, 0x30, 0xcc, 0x08, 0x7e, 0x60, 0x4f, 0xc0, 
0xff, 0xf8, 0x07, 0xc0, 0x78, 0x0f, 0xff, 0xf9, 0xff, 0x30, 0x33, 0x31, 0xe6, 0x7f, 0xcf, 0xc0, 
0xff, 0xf8, 0x07, 0xc0, 0x70, 0x0f, 0xff, 0xf9, 0xff, 0x30, 0x33, 0x31, 0xe6, 0x7f, 0xcf, 0xc0, 
0xff, 0xf8, 0x03, 0xc0, 0x70, 0x0f, 0xff, 0xf8, 0x00, 0x33, 0x33, 0x36, 0x66, 0x00, 0x0f, 0xc0, 
0xff, 0xf8, 0x01, 0xc0, 0x60, 0x1f, 0xff, 0xf8, 0x00, 0x33, 0x33, 0x36, 0x66, 0x00, 0x0f, 0xc0, 
0xff, 0xfc, 0x00, 0xc0, 0x60, 0x1f, 0xff, 0xff, 0xff, 0xf3, 0x33, 0xff, 0xe7, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x01, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xf3, 0x33, 0xff, 0xe7, 0xff, 0xff, 0xc0, 
0xff, 0xfc, 0x01, 0xc0, 0x00, 0x1f, 0xff, 0xf9, 0xf8, 0x3f, 0xf0, 0xff, 0xe0, 0x00, 0x3f, 0xc0, 
0xff, 0xfe, 0x01, 0xc0, 0x00, 0x3f, 0xff, 0xf9, 0xf8, 0x3f, 0xff, 0xff, 0xe0, 0x00, 0x1f, 0xc0, 
0xff, 0xfe, 0x01, 0xc0, 0x00, 0x3f, 0xff, 0xfe, 0x06, 0xf3, 0x3f, 0xff, 0x80, 0x79, 0x8f, 0xc0, 
0xff, 0xff, 0x01, 0xc0, 0x00, 0x7f, 0xff, 0xf9, 0xe0, 0x3c, 0xf8, 0x0f, 0x61, 0xe7, 0x9f, 0xc0, 
0xff, 0xff, 0xc3, 0xc0, 0x00, 0xff, 0xff, 0xf9, 0xe0, 0x3c, 0xe0, 0x03, 0xe1, 0xe7, 0xbf, 0xc0, 
0xff, 0xff, 0xe3, 0xc0, 0x00, 0xff, 0xff, 0xfe, 0x7f, 0xcf, 0xc3, 0xe1, 0xff, 0x87, 0xbf, 0xc0, 
0xff, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff, 0xfe, 0x7f, 0xcf, 0x87, 0xf8, 0xff, 0x87, 0xbf, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x98, 0x03, 0x9f, 0xfc, 0x61, 0x81, 0xbf, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x98, 0x03, 0x11, 0x06, 0x61, 0x81, 0xbf, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xfe, 0xf3, 0x30, 0x66, 0x77, 0x98, 0x4f, 0xc0, 
0xff, 0xff, 0xff, 0x00, 0x7f, 0xff, 0xff, 0xf9, 0xfe, 0xf7, 0x3c, 0x0e, 0x37, 0x98, 0x4f, 0xc0, 
0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xf8, 0x01, 0x07, 0x3f, 0x87, 0x3e, 0x06, 0x4f, 0xc0, 
0xff, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xff, 0xf8, 0x01, 0x07, 0x3f, 0x87, 0x3e, 0x06, 0x4f, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xe7, 0xff, 0x3c, 0x0e, 0x3e, 0x00, 0x0f, 0xc0, 
0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe7, 0xff, 0x30, 0x26, 0x7e, 0x00, 0x0f, 0xc0, 
0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x18, 0x03, 0x11, 0x06, 0x61, 0x86, 0x4f, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0x18, 0x03, 0x9f, 0xfc, 0x61, 0x86, 0x4f, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0x60, 0xcd, 0x8f, 0xf8, 0xe0, 0x18, 0x4f, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfe, 0x60, 0xcd, 0xc3, 0xe1, 0xe0, 0x18, 0x4f, 0xc0, 
0xff, 0xfc, 0x00, 0x3e, 0x00, 0x1f, 0xff, 0xff, 0x99, 0x0c, 0xe0, 0x03, 0xf9, 0x99, 0xff, 0xc0, 
0xff, 0xfc, 0x01, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0x99, 0x0c, 0x78, 0x0f, 0xf9, 0x99, 0xff, 0xc0, 
0xff, 0xf8, 0x03, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xf9, 0xff, 0x3f, 0xff, 0xe6, 0x18, 0x4f, 0xc0, 
0xff, 0xf8, 0x07, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xf1, 0xff, 0x0f, 0xff, 0xe6, 0x18, 0x4f, 0xc0, 
0xff, 0xf8, 0x07, 0xff, 0xf0, 0x0f, 0xff, 0xfe, 0x60, 0x3c, 0xcc, 0x0e, 0x00, 0x00, 0x3f, 0xc0, 
0xff, 0xf8, 0x07, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x3d, 0xe7, 0xe0, 0x7f, 0xc0, 
0xff, 0xf8, 0x07, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x39, 0xe7, 0xe0, 0x7f, 0xc0, 
0xff, 0xf8, 0x07, 0xff, 0xf0, 0x0f, 0xff, 0xf8, 0x00, 0x3c, 0x0c, 0xd8, 0x06, 0x66, 0x0f, 0xc0, 
0xff, 0xf8, 0x03, 0xff, 0xf0, 0x0f, 0xff, 0xf8, 0x00, 0x3c, 0x0c, 0xc8, 0x06, 0x66, 0x0f, 0xc0, 
0xff, 0xfc, 0x01, 0xff, 0xe0, 0x1f, 0xff, 0xf9, 0xff, 0x30, 0xc3, 0x3e, 0x07, 0xe0, 0x7f, 0xc0, 
0xff, 0xfc, 0x00, 0xff, 0x80, 0x1f, 0xff, 0xf9, 0xff, 0x30, 0xc3, 0x3e, 0x07, 0xe0, 0x7f, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf9, 0x81, 0x30, 0xfc, 0xc9, 0x80, 0x06, 0x0f, 0xc0, 
0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf9, 0x81, 0x30, 0xfc, 0xc9, 0x80, 0x06, 0x0f, 0xc0, 
0xff, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf9, 0x81, 0x3c, 0xcc, 0xc6, 0x19, 0x81, 0xbf, 0xc0, 
0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf9, 0x81, 0x3c, 0xcc, 0xc6, 0x19, 0x81, 0xbf, 0xc0, 
0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf9, 0x81, 0x3f, 0xf3, 0xf1, 0xe7, 0xe0, 0x4f, 0xc0, 
0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0xf9, 0x81, 0x3f, 0xf3, 0xf1, 0xe7, 0xe0, 0x4f, 0xc0, 
0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xf9, 0xff, 0x3f, 0xc0, 0xf1, 0xe1, 0x86, 0x3f, 0xc0, 
0xff, 0xff, 0xf0, 0x00, 0x07, 0xff, 0xff, 0xf9, 0xff, 0x3f, 0xc0, 0xf1, 0xe1, 0x86, 0x3f, 0xc0, 
0xff, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xf8, 0x00, 0x30, 0xf0, 0xf9, 0xe1, 0x9f, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x30, 0xf0, 0xf9, 0xe1, 0x9f, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0
};

const unsigned char gImage_R[4000] PROGMEM= { /* For red image */
// 'mavigo_r', 122x250px
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xfc, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0c, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1e, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0e, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1b, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1b, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x19, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0c, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0c, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0x80, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7e, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x70, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0x80, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7c, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x60, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1c, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0c, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x09, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x19, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1b, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0x80, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1c, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x06, 0x58, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xfc, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x19, 0xec, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0x6c, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0x7c, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x38, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1c, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0x80, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x3f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0c, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0d, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x19, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1b, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x5f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xf8, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xfc, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x19, 0xec, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0x6c, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1e, 0x78, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x30, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x01, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0c, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x20, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0x80, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x18, 0x60, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xc0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xe0, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0
};

Upload ไปยัง Arduino Nano

เมื่อเตรียมข้อมูลเรียนร้อยแล้ว ก็ทำการ upload ข้อมูลพร้อมทั้ง code ที่ช่วยในการนำข้อมูลภาพจาก flash memory ไปส่งให้กับ display ก็เป็นอันเสร็จเรียบร้อย แต่ก่อนอื่น เรามาทำความเข้าใจตัว code ที่ว่ากันก่อน (ตัว code นี้ได้ดัดแปลงมากจาก code ของ good-display.com

#include

ส่วนนี้จะ  include 2 อย่างคือ SPI.h ซึ่งเป็น library ที่เราใช้ในการสื่อสารกับ display อีก file คือ mavigo_demo.h ซึ่งเป็น file ที่เก็บภาพที่จะแสดงบน screen ซึ่งเราสร้างไว้ในขั้นตอนก่อนหน้านี้

#include <SPI.h>
#include"mavigo_demo.h"

IO setting

ส่วนนี้เป็นการกำหนดหน้าที่ให้กับ pin ต่าง ๆ 

int BUSY_Pin = 7; 
int RES_Pin = 8; 
int DC_Pin = 9; 
int CS_Pin = 10; 

#define

เป็นการกำหนดชื่อให้กับค่าคงที่เพื่อให้เข้าใจง่าย ในที่นี้เป็นการกำหนดขนาดของ RAM ที่ใช้แสดงภาพเต็ม screen ซึ่งก็คือ 4000 byte

#define ALLSCREEN_GRAGHBYTES  4000

//Functions declaration

เป็นการประกาศ function ที่จะใช้ โดยตัวเนื้อของ function จะถูกเขียนไว้หลังจาก loop() ในส่วนของ function definition

setup()

ในส่วนนี้เป็นการกำหนดทิศทางของข้อมูลของแต่ละ pin และ เตรียมพร้อมสำหรับการสื่อสาร SPI

   pinMode(BUSY_Pin, INPUT); 
   pinMode(RES_Pin, OUTPUT);  
   pinMode(DC_Pin, OUTPUT);    
   pinMode(CS_Pin, OUTPUT);   
   //SPI
   SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0)); 
   SPI.begin ();  

loop()

ใน loop function นี้จะแบ่ง code เป็นสองส่วนหลัก ๆ คือ ส่วนที่แสดงภาพบน screen กับส่วนที่ clear screen ในแต่ละส่วนก็จะมี function การทำงานที่ครบถ้วน คือ เริ่มตั้งแต่ Initial hardware (EPD_HW_Init()) นำภาพขึ้น screen (EPD_WhiteScreen_ALL()) หรือ clear screen (EPD_WhiteScreen_ALL_Clean()) และ เข้าสู่ Deep sleep mode (EPD_DeepSleep()) เพื่อประหยัดพลังงาน ซึ่งหลังจาก Deep sleep ถ้าจะให้ display ทำงานอีกครั้ง ต้องส่งสัญญาณ Hardware reset ซึ่งอยู่ใน (EPD_HW_Init())

    //Full screen refresh
    EPD_HW_Init(); //Electronic paper initialization
    EPD_WhiteScreen_ALL(gImage_BW,gImage_R); //Refresh the picture in full screen
    EPD_DeepSleep(); //Enter deep sleep,Sleep instruction is necessary, please do not delete!!! 
    delay(2000);   
    
    //Clean
    EPD_HW_Init(); //Electronic paper initialization
    EPD_WhiteScreen_ALL_Clean();
    EPD_DeepSleep(); //Enter deep sleep,Sleep instruction is necessary, please do not delete!!!
    delay(2000); 
    
    while(1); 

// Functions definition

ในส่วนสุดท้ายนี้เป็นรายละเอียดของ function ที่ใช้ในการควบคุม display ถ้าอยากทราบรายละเอียดอาจต้องเปิดคู่มือของ display และ driver IC (SSD1680) ควบคู่กันไป โดยในที่นี้จะยังไม่กล่าวถึงรายละเอียดของ function เหล่านี้

เพื่อความสะดวกให้สร้าง “New Sketch” copy code ด้านล่างนี้ไปวางทับ แล้วอย่าลืม วาง file ที่เก็บตัวเลขของภาพ (ในที่นี้คือ mavigo_demo.h) ไว้ใน folder เดียวกันนะครับ

#include <SPI.h>
#include"mavigo_demo.h"

//IO settings
int BUSY_Pin = 7; 
int RES_Pin = 8; 
int DC_Pin = 9; 
int CS_Pin = 10; 

//250*122///////////////////////////////////////

#define ALLSCREEN_GRAGHBYTES  4000

// Function declaration

void SPI_Write(unsigned char value);
void Epaper_Write_Command(unsigned char command);
void Epaper_Write_Data(unsigned char command);
//EPD
void Epaper_READBUSY(void);
void EPD_HW_Init(void); //Electronic paper initialization
void EPD_Update(void);
void EPD_DeepSleep(void);

//Display 
void EPD_WhiteScreen_ALL(const unsigned char *BW_datas,const unsigned char *R_datas);
void EPD_WhiteScreen_ALL_Clean(void);

void setup() {

   pinMode(BUSY_Pin, INPUT); 
   pinMode(RES_Pin, OUTPUT);  
   pinMode(DC_Pin, OUTPUT);    
   pinMode(CS_Pin, OUTPUT);   
   //SPI
   SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0)); 
   SPI.begin ();  

}

//Tips//
/*When the electronic paper is refreshed in full screen, the picture flicker is a normal phenomenon, and the main function is to clear the display afterimage in the previous picture.
  When the local refresh is performed, the screen does not flash.*/
/*When you need to transplant the driver, you only need to change the corresponding IO. The BUSY pin is the input mode and the others are the output mode. */
  
void loop() {
    //Full screen refresh
    EPD_HW_Init(); //Electronic paper initialization
    EPD_WhiteScreen_ALL(gImage_BW,gImage_R); //Refresh the picture in full screen
    EPD_DeepSleep(); //Enter deep sleep,Sleep instruction is necessary, please do not delete!!! 
    delay(2000);   
    
    //Clean
    EPD_HW_Init(); //Electronic paper initialization
    EPD_WhiteScreen_ALL_Clean();
    EPD_DeepSleep(); //Enter deep sleep,Sleep instruction is necessary, please do not delete!!!
    delay(2000); 
    
    while(1); 

}


// Function definition

//////////////////////SPI///////////////////////////////////

void SPI_Write(unsigned char value)                                    
{                                                           
  SPI.transfer(value);
}

void Epaper_Write_Command(unsigned char command)
{
  digitalWrite(CS_Pin,LOW);                   
  digitalWrite(DC_Pin,LOW);   // command write
  SPI_Write(command);
  digitalWrite(CS_Pin,HIGH);
}

void Epaper_Write_Data(unsigned char command)
{
  digitalWrite(CS_Pin,LOW);                   
  digitalWrite(DC_Pin,HIGH);   // data write
  SPI_Write(command);
  digitalWrite(CS_Pin,HIGH);
}

/////////////////EPD settings Functions/////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////
//SSD1680
void EPD_HW_Init(void)
{
  digitalWrite(RES_Pin,LOW);  // Module reset      
  delay(10); //At least 10ms delay 
  digitalWrite(RES_Pin,HIGH); 
  delay(10); //At least 10ms delay  

  Epaper_READBUSY();   
  Epaper_Write_Command(0x12);  //SWRESET
  Epaper_READBUSY();   

  Epaper_Write_Command(0x01); //Driver output control      
  Epaper_Write_Data(0xF9);
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00);

  Epaper_Write_Command(0x11); //data entry mode       
  Epaper_Write_Data(0x01);

  Epaper_Write_Command(0x44); //set Ram-X address start/end position   
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x0F);    //0x0F-->(15+1)*8=128

  Epaper_Write_Command(0x45); //set Ram-Y address start/end position          
  Epaper_Write_Data(0xF9);   //0xF9-->(249+1)=250
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00);
  Epaper_Write_Data(0x00); 

  Epaper_Write_Command(0x3C); //BorderWavefrom
  Epaper_Write_Data(0x05); //0x05 or 0xC0

  Epaper_Write_Command(0x18); //Read built-in temperature sensor
  Epaper_Write_Data(0x80);  
  
  Epaper_Write_Command(0x21); //  Display update control
  Epaper_Write_Data(0x00);  
  Epaper_Write_Data(0x80);  

  Epaper_Write_Command(0x4E);   // set RAM x address count to 0;
  Epaper_Write_Data(0x00);
  
  Epaper_Write_Command(0x4F);   // set RAM y address count to 0XF9;    
  Epaper_Write_Data(0xF9);
  Epaper_Write_Data(0x00);
  Epaper_READBUSY();
  
}
//////////////////////////////All screen update////////////////////////////////////////////
void EPD_WhiteScreen_ALL(const unsigned char *BW_datas,const unsigned char *R_datas)
{
   unsigned int i;  
  Epaper_Write_Command(0x24);   //write RAM for black(0)/white (1)
   for(i=0;i<ALLSCREEN_GRAGHBYTES;i++)
   {               
     Epaper_Write_Data(pgm_read_byte(&BW_datas[i]));
   }
  Epaper_Write_Command(0x26);   //write RAM for black(0)/white (1)
   for(i=0;i<ALLSCREEN_GRAGHBYTES;i++)
   {               
     Epaper_Write_Data(~(pgm_read_byte(&R_datas[i])));
   }
   EPD_Update();   
}

void EPD_WhiteScreen_ALL_Clean(void)
{
   unsigned int i;  
  Epaper_Write_Command(0x24);   //write RAM for black(0)/white (1)
   for(i=0;i<ALLSCREEN_GRAGHBYTES;i++)
   {               
     Epaper_Write_Data(0xff);
   }
  Epaper_Write_Command(0x26);   //write RAM for black(0)/white (1)
   for(i=0;i<ALLSCREEN_GRAGHBYTES;i++)
   {               
     Epaper_Write_Data(0x00);
   }
   EPD_Update();   
}

/////////////////////////////////////////////////////////////////////////////////////////
void EPD_Update(void)
{
  Epaper_Write_Command(0x22); //Display Update Control
  Epaper_Write_Data(0xF7);   
  Epaper_Write_Command(0x20);  //Activate Display Update Sequence
  Epaper_READBUSY();   

}

void EPD_DeepSleep(void)
{  
  Epaper_Write_Command(0x10); //enter deep sleep
  Epaper_Write_Data(0x01); 
  delay(100);
}

void Epaper_READBUSY(void)
{ 
  while(1)
  {   //=1 BUSY
     if(digitalRead(BUSY_Pin)==0) break;
  }  
}

//////////////////////////////////END//////////////////////////////////////////////////

ในการแสดงภาพบน screen จะมีการกะพริบหลายครั้งถือเป็นเรื่องปกติครับ ถ้า upload แล้วไม่เกิด error อะไร แต่ไม่แสดงภาพ ให้ลองตรวจสอบการต่อสายดูนะครับ หรือลองถอดสาย Busy แล้วเสียบใหม่ดูนะครับ

สรุป

การที่เราทำข้อมูลเป็นลักษณะของรูปภาพใส่ file แล้ว upload ไปยัง microcontroller ทำให้ความซับซ้อนในการโปรแกรมน้อย เพราะเขียนโปรแกรมแค่นำข้อมูลใน flash memory ไปส่งให้ตัว display เท่านั้นเอง และเนื่องจากความซับซ้อนของโปรแกรมน้อย ก็ทำให้ใช้ RAM น้อยไปด้วย เหมาะกับ microcontroller ขนาดเล็ก RAM ไม่มาก อย่าง ATmega328p ในบอร์ด Arduino Nano ส่วนในกรณีที่เราอยากให้มีการเปลี่ยนภาพได้ โดยที่เราไม่อยากมาทำการ upload ใหม่ทุกครั้งที่ต้องการเปลี่ยนภาพ เราก็สามารถทำภาพเตรียมไว้ใน flash memory ได้ แล้วก็เขียน code ให้สามารถเลือกได้ว่าจะนำภาพไหน ( array ตัวไหน)ใน memory ขึ้นมาแสดง โดยปกติแล้วถ้าเป็น screen แบบอื่น เช่น OLED หรือ TFT มักจะไม่ใช้วิธีนี้ เพราะ screen เหล่านั้นมักจะใช้แสดงภาพที่มีการ update บ่อย ๆ ดังนั้นการที่ต้องมา upload ใหม่ทุกครั้งจึงไม่สมเหตุสมผล แต่ไม่ค่อยมีปัญหาสำหรับ e-paper เพราะมักจะถูกใช้ในงานที่ไม่ต้อง update บ่อยอยู่แล้ว

ใส่ความเห็น