120xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0x7F, 0x1F, 0xFF, 0xFF, 0x43, 0x10, 0x00, 0x0F, 0xFF,
130xFF, 0xFF, 0xFF, 0xE1, 0xCF, 0x9F, 0xFF, 0xBB, 0xF7, 0xFF, 0xFE, 0x90, 0x70, 0x00, 0x07, 0xFF,
140xFF, 0xFF, 0xFF, 0x80, 0x3F, 0xBF, 0xFF, 0x97, 0xF9, 0xFF, 0xFE, 0xF8, 0x0E, 0x00, 0x03, 0xFF,
150xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xBF, 0xFF, 0xDF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0C, 0x00, 0x01, 0xFF,
160xFF, 0xFF, 0xFF, 0x01, 0xCC, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0xFF,
170xFF, 0xFF, 0xFE, 0x07, 0xF3, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xF7, 0xFF, 0xC0, 0x00, 0x00, 0x7F,
180xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xDF, 0xFD, 0xFF, 0xF0, 0x00, 0x00, 0x3F,
190xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xD7, 0xFE, 0x7F, 0xF8, 0x00, 0x00, 0x1F,
200xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xEF, 0xFF, 0x9F, 0xFE, 0x00, 0x00, 0x0F,
210xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF3, 0xE0, 0x0F, 0xFF, 0x80, 0x00, 0x07,
220xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xF3, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x03,
230xFF, 0xFF, 0xFF, 0x7E, 0xF8, 0x7E, 0x00, 0x03, 0xFF, 0xF7, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x01,
240xFF, 0xFF, 0xFF, 0x7D, 0xF0, 0x3C, 0x00, 0x01, 0xFF, 0xF7, 0x00, 0x00, 0x07, 0xFF, 0x80, 0x00,
250xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x1E, 0x00, 0x01, 0xFF, 0xEC, 0x00, 0x00, 0x30, 0xFF, 0xF8, 0x00,
260xFF, 0xFF, 0xFE, 0xFF, 0xE0, 0x1F, 0x00, 0x01, 0xFF, 0x98, 0x00, 0x00, 0x1F, 0x03, 0xFF, 0xC1,
270xFF, 0xFF, 0xFE, 0xFF, 0xE0, 0x1F, 0x80, 0x00, 0xFE, 0x70, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x1F,
280xFF, 0xFF, 0xFE, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0xFD, 0xF0, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF,
290xFF, 0xFF, 0xFE, 0xFF, 0xC0, 0x3E, 0xF0, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
300xFF, 0xFF, 0xFE, 0xFF, 0x80, 0x38, 0x3C, 0x01, 0x8F, 0xF0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF,
310xFF, 0xFF, 0xFE, 0xDF, 0x00, 0x78, 0x0F, 0x80, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF,
320xFF, 0xFF, 0xFE, 0xFE, 0x00, 0x70, 0x01, 0xFF, 0xCF, 0xB0, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF,
330xFF, 0xFF, 0xFF, 0x7C, 0x00, 0xE0, 0x00, 0x0F, 0x0F, 0x9C, 0x80, 0x00, 0x00, 0x07, 0xFF, 0xFF,
340xFF, 0xFF, 0xFF, 0x38, 0x03, 0xF0, 0x00, 0x06, 0x1F, 0x9E, 0x40, 0x00, 0x00, 0x03, 0xFF, 0xFF,
350xFF, 0xFF, 0xFF, 0x9F, 0xFE, 0x0C, 0x00, 0x0E, 0x1F, 0xDF, 0x30, 0x00, 0x00, 0x01, 0xFF, 0xFF,
360xFF, 0xFF, 0xFF, 0xE0, 0x3F, 0x62, 0x00, 0x1C, 0x3F, 0xBF, 0x8E, 0x00, 0x00, 0x00, 0xFF, 0xFF,
370xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xB1, 0x80, 0x7E, 0xFE, 0x7F, 0x83, 0xC0, 0x00, 0x00, 0x7F, 0xFF,
380xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x58, 0x40, 0xFF, 0xF9, 0xFF, 0xC0, 0x78, 0x00, 0x00, 0x7F, 0xFF,
390xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x20, 0xFF, 0x87, 0xFF, 0xE0, 0xE0, 0x00, 0x00, 0xFF, 0xFF,
400xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x11, 0xFF, 0xBF, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFF,
410xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xCF, 0xFF, 0xDF, 0xFF, 0xFE, 0x07, 0xFF, 0x07, 0xFF, 0xFF,
420xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x76, 0x7F, 0xBF, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0xFF,
430xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x94, 0x3E, 0xFF, 0xFF, 0xFF, 0xFC, 0x02, 0xFF, 0xFF, 0xFF,
440xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF,
450xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x78, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0x3F, 0xFF, 0xFF,
460xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x9F, 0xFF, 0xFF,
470xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF7, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xCF, 0xFF, 0xFF,
480xE0, 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xC7, 0xFF, 0xFF,
490xCF, 0x9F, 0xFF, 0xEF, 0x3F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xE0, 0x00, 0xBF, 0xE7, 0xFF, 0xFF,
500xD8, 0xC0, 0x30, 0x03, 0x30, 0x1F, 0xFF, 0x7F, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0x1F, 0xFF, 0xFF,
510xD8, 0xCF, 0x87, 0xC3, 0x27, 0xCF, 0xFF, 0x7F, 0xFF, 0xFF, 0xF0, 0x00, 0x60, 0xFF, 0xFF, 0xFF,
520xD8, 0x18, 0xCC, 0x63, 0x2E, 0x6F, 0xFF, 0x7F, 0xFF, 0xFF, 0xF8, 0x02, 0x0F, 0xFF, 0xFF, 0xFF,
530xD8, 0x18, 0xCC, 0x63, 0x20, 0x6F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF0, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF,
540xD8, 0x18, 0xCC, 0x63, 0x30, 0x6F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF8, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF,
550xD8, 0x18, 0xCF, 0xE3, 0x27, 0xEF, 0xFF, 0x9F, 0xFF, 0xFE, 0x40, 0x67, 0xFF, 0xFF, 0xFF, 0xFF,
560xD8, 0xD8, 0xCC, 0x03, 0x2C, 0x6F, 0xFF, 0xDF, 0xFF, 0xFE, 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF,
570xD8, 0xD8, 0xCC, 0xE3, 0x0C, 0x6F, 0xFF, 0xED, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
580xCF, 0x8F, 0x87, 0xCF, 0xC7, 0xEF, 0xFF, 0xE5, 0xFB, 0xFF, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
590xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0xFC, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
600xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFD, 0x1E, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
610xEF, 0x80, 0x00, 0x0C, 0x30, 0xF7, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF,
620xCF, 0x80, 0x00, 0x0C, 0x30, 0xF7, 0xC0, 0x01, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xED, 0xFF, 0xFF,
630xD8, 0xC0, 0x00, 0x0C, 0x30, 0xF7, 0xDF, 0xBD, 0xFF, 0xFE, 0xDF, 0xFF, 0xFF, 0xED, 0xFF, 0xFF,
640xD8, 0xCF, 0x8F, 0xC5, 0xFE, 0xF7, 0xD8, 0x0D, 0x80, 0x00, 0xC0, 0x10, 0x00, 0x01, 0x02, 0x07,
650xD8, 0x1C, 0xCC, 0x68, 0x30, 0x67, 0xD8, 0x0D, 0x3C, 0x73, 0xF7, 0xC7, 0x9F, 0x3C, 0x78, 0xF3,
660xD8, 0x00, 0xCC, 0x63, 0xB0, 0x6F, 0xD8, 0x0D, 0x66, 0xC8, 0xC6, 0x6C, 0xD9, 0x8C, 0xCD, 0x9B,
670xD8, 0x0F, 0xCC, 0x6F, 0xB0, 0x6F, 0xDF, 0x0D, 0x66, 0xC8, 0xC6, 0x6C, 0xD9, 0x8C, 0xCD, 0x83,
680xD8, 0x18, 0xCC, 0x6F, 0xB0, 0x6F, 0xD8, 0x0D, 0x7E, 0xC0, 0xC6, 0x0C, 0xD9, 0x8C, 0xC0, 0xF3,
690xD8, 0xD8, 0xCC, 0x6F, 0xB0, 0x0F, 0xD8, 0x0C, 0x60, 0xC8, 0xC6, 0xEC, 0xD9, 0x8C, 0xCC, 0x1B,
700xD8, 0xD8, 0xCC, 0x6F, 0xB0, 0x6F, 0xD8, 0x0C, 0x66, 0xC8, 0xC6, 0xEC, 0xD9, 0x8C, 0xCD, 0x9B,
710xCF, 0x8F, 0xCC, 0x6F, 0x9E, 0x6F, 0xDF, 0xBF, 0x3C, 0x72, 0x76, 0xE7, 0x99, 0xBE, 0x78, 0xF3,
720xE0, 0x20, 0x00, 0x0F, 0xC0, 0x0F, 0xC0, 0x00, 0x01, 0x07, 0x00, 0xF0, 0x00, 0x00, 0x82, 0x07,
730xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
740xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
750xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
790xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
800xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
810xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
820xF8, 0x00, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
830xF0, 0x00, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
840xF1, 0xFC, 0x3F, 0xFF, 0xFE, 0x71, 0xFF, 0xF3, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
850xF1, 0xFC, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x01, 0x00, 0x20, 0x08, 0x00, 0x00, 0x7F,
860xF1, 0xC7, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F,
870xF1, 0xC7, 0x7F, 0x87, 0xE3, 0xFE, 0x3F, 0x1F, 0xF3, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0xFE, 0x1F,
880xF1, 0xC7, 0x7F, 0x87, 0xE3, 0xFE, 0x3F, 0x1F, 0xF3, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0xFE, 0x1F,
890xF1, 0xC7, 0x71, 0xCE, 0x38, 0x70, 0x71, 0xC3, 0x83, 0x8E, 0xE3, 0x9C, 0x77, 0x1C, 0xE3, 0x9F,
900xF1, 0xFC, 0x71, 0xCE, 0x38, 0x70, 0x71, 0xC3, 0x83, 0x8E, 0x03, 0x9C, 0x77, 0x1C, 0xE3, 0x9F,
910xF1, 0xFC, 0x71, 0xCE, 0x38, 0x70, 0x71, 0xC3, 0x83, 0x8E, 0x03, 0x9C, 0x77, 0x1C, 0xE3, 0x9F,
920xF1, 0xC0, 0x70, 0x0E, 0x38, 0x70, 0x71, 0xC3, 0x83, 0x80, 0x3F, 0x9C, 0x07, 0xFC, 0xE0, 0x1F,
930xF1, 0xC0, 0x70, 0x0E, 0x38, 0x70, 0x71, 0xC3, 0x83, 0x80, 0xE3, 0x9C, 0x77, 0x00, 0xE0, 0x3F,
940xF1, 0xCE, 0x71, 0x8E, 0x38, 0x70, 0x71, 0xC3, 0x83, 0x9C, 0xE3, 0x9C, 0x77, 0x00, 0xE7, 0xFF,
950xF1, 0xCE, 0x71, 0x8E, 0x38, 0x70, 0x71, 0xC3, 0x83, 0x9C, 0xE3, 0x9C, 0x77, 0x1C, 0xE7, 0xFF,
960xF1, 0xCE, 0x71, 0x87, 0xE0, 0x1E, 0x3F, 0x00, 0xF3, 0x9C, 0x3F, 0x8F, 0xC1, 0xF8, 0xE7, 0xFF,
970xF1, 0xCE, 0x71, 0xC7, 0xE0, 0x1E, 0x3F, 0x00, 0xF3, 0x9C, 0x3F, 0x8F, 0xC1, 0xF8, 0xE7, 0xFF,
980xF8, 0x0E, 0x03, 0xE0, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF,
990xF8, 0x1F, 0x03, 0xF0, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x3F, 0x00, 0x00, 0x08, 0x00, 0x0F, 0xFF,
1000xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1010xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1020xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1030xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
1040xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x77,
1050xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF,
1060xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x8F, 0xFB,
1070xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 0x3F, 0xFB,
1080xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE7, 0xFE, 0x7F, 0xE6, 0x10, 0x00, 0x08, 0xFF, 0xFB,
1090xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x01, 0xE6, 0x06, 0x60, 0x6E, 0x10, 0x00, 0x11, 0xFF, 0xF7,
1100xE0, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x03, 0xEE, 0x06, 0x60, 0x6C, 0x18, 0x00, 0x43, 0xC3, 0xE7,
1110xEF, 0xEF, 0x42, 0x3F, 0xBF, 0xC0, 0x03, 0x6E, 0x0E, 0xE0, 0xEC, 0x38, 0x00, 0x83, 0x03, 0xEF,
1120xE8, 0x21, 0xA1, 0x20, 0xBF, 0xC0, 0x06, 0xCC, 0x0C, 0xC0, 0xCC, 0x38, 0x03, 0x04, 0x07, 0x9F,
1130xEB, 0xA5, 0x53, 0xAE, 0xBF, 0xC0, 0x0C, 0xCC, 0x00, 0xC0, 0xDC, 0x38, 0x04, 0x00, 0x0F, 0x1F,
1140xEB, 0xA3, 0x44, 0xAE, 0xBF, 0x80, 0x18, 0xCC, 0x00, 0xC0, 0xDC, 0x38, 0x08, 0x00, 0x1F, 0xDF,
1150xEB, 0xA3, 0xBF, 0x2E, 0xBF, 0x80, 0x30, 0xDC, 0x01, 0xC1, 0xD8, 0x3C, 0x10, 0x00, 0x3F, 0xFF,
1160xE8, 0x25, 0x06, 0xA0, 0xBF, 0x80, 0x61, 0x98, 0xFD, 0xFF, 0xD8, 0x3C, 0x30, 0x00, 0xFF, 0xDF,
1170xEF, 0xEA, 0xAA, 0xBF, 0xBF, 0x80, 0xFF, 0x98, 0x19, 0xFF, 0x18, 0x3C, 0x60, 0x01, 0xC7, 0xDF,
1180xE0, 0x0C, 0xD8, 0x00, 0x3F, 0x01, 0xFF, 0x98, 0x19, 0x80, 0x38, 0x3C, 0xC0, 0x02, 0x07, 0xBF,
1190xED, 0xA4, 0xAC, 0x20, 0xBF, 0x03, 0x01, 0xB8, 0x19, 0x80, 0x30, 0x1E, 0xC0, 0x00, 0x0F, 0xBF,
1200xE8, 0xC2, 0x33, 0x5B, 0x3F, 0x06, 0x03, 0x38, 0x3B, 0x80, 0x30, 0x1D, 0x80, 0x00, 0x1F, 0x7F,
1210xEB, 0x7C, 0xF2, 0x1A, 0x3F, 0x0C, 0x03, 0x30, 0x33, 0x80, 0x30, 0x1F, 0x80, 0x00, 0x3E, 0xFF,
1220xE7, 0x08, 0x25, 0x74, 0xBF, 0x18, 0x03, 0x3F, 0xF3, 0x00, 0x7F, 0x9B, 0x80, 0x00, 0xFD, 0xFF,
1230xEC, 0xFE, 0x11, 0xB0, 0xBE, 0x30, 0x03, 0x1F, 0xE3, 0x00, 0x7F, 0x9F, 0x80, 0x03, 0xFB, 0xFF,
1240xE1, 0x0A, 0xFA, 0x3F, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x80, 0x0F, 0xE7, 0xFF,
1250xE5, 0x26, 0x73, 0xEA, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xCF, 0xFF,
1260xEE, 0x9A, 0x91, 0x1A, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xBF, 0xFF,
1270xEA, 0xA9, 0xC1, 0xC4, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF,
1280xEC, 0x95, 0x33, 0x0B, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xF9, 0xFF, 0xFF,
1290xEC, 0x2A, 0xB9, 0x0C, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xE7, 0xFF, 0xFF,
1300xED, 0x03, 0x73, 0x26, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0x9F, 0xFF, 0xFF,
1310xEE, 0xF9, 0x54, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x7F, 0xFF, 0xFF,
1320xE0, 0x0E, 0xF0, 0x8C, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF,
1330xEF, 0xE7, 0x55, 0xAC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1340xE8, 0x23, 0xCF, 0x89, 0xBF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF,
1350xEB, 0xAB, 0xD3, 0xFD, 0x38, 0x7F, 0xFF, 0xFF, 0xE7, 0xF8, 0x7F, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF,
1360xEB, 0xA8, 0x68, 0x40, 0xBB, 0xEC, 0xE7, 0xCC, 0xFF, 0x7B, 0xEC, 0xEF, 0x39, 0xE9, 0xFF, 0xFF,
1370xEB, 0xA1, 0xD2, 0xDB, 0xB8, 0x8A, 0xD7, 0x2B, 0xE8, 0x78, 0x8A, 0x94, 0xA5, 0xA5, 0xFF, 0xFF,
1380xE8, 0x29, 0x10, 0x36, 0xB3, 0xB0, 0x87, 0x49, 0xE9, 0x73, 0xB0, 0x85, 0xAD, 0x2D, 0xFF, 0xFF,
1390xEF, 0xEE, 0x23, 0xA8, 0x37, 0xB3, 0xBE, 0x4C, 0xCB, 0x77, 0xB7, 0xBD, 0x2D, 0x6D, 0xFF, 0xFF,
1400xE0, 0x00, 0x00, 0x00, 0x37, 0xB8, 0x8F, 0x11, 0xDB, 0x77, 0x38, 0x8C, 0x23, 0x69, 0xFF, 0xFF,
1410xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1420xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
1460xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1470xC0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03,
1480xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1490xA3, 0x62, 0x3F, 0xFF, 0xCC, 0xC6, 0x54, 0x7F, 0xC4, 0x46, 0x44, 0x47, 0xD6, 0x45, 0x44, 0x7D,
1500xAE, 0xAE, 0xFF, 0xFE, 0x55, 0x6D, 0xD6, 0xFE, 0x5D, 0xDD, 0xEF, 0x5E, 0x55, 0xDC, 0x6D, 0xFD,
1510xA6, 0x2E, 0x7F, 0xFF, 0xCC, 0xED, 0x46, 0xFF, 0xCD, 0xCE, 0xEE, 0xCF, 0xD6, 0xCC, 0x6D, 0xFD,
1520xAE, 0xAE, 0xFF, 0xFE, 0x55, 0x6D, 0x56, 0xFE, 0x5D, 0xDF, 0x6D, 0xDE, 0x57, 0x5D, 0x6D, 0xFD,
1530xAE, 0xA2, 0x3F, 0xFF, 0xCD, 0x46, 0x56, 0xFF, 0xDC, 0x44, 0xC4, 0x47, 0xC4, 0xC5, 0x44, 0x7D,
1540xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1550xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1560xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1570xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1580xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1590xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1600xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1610xD5, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAB,
1620xD5, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAB,
1630xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1640xA2, 0x22, 0x22, 0x3F, 0xE4, 0xCC, 0x65, 0x46, 0x44, 0x44, 0x45, 0xCF, 0xD6, 0x44, 0xC4, 0x45,
1650xAE, 0xEE, 0xEF, 0x7E, 0x5D, 0x56, 0xDD, 0x6E, 0x5D, 0xDD, 0xD5, 0xD6, 0x55, 0xDD, 0x55, 0x55,
1660xA6, 0x66, 0x6F, 0x7F, 0xEC, 0xCE, 0xD4, 0x6F, 0xCD, 0xCD, 0xD5, 0xCF, 0xD6, 0xCC, 0xD5, 0x45,
1670xAE, 0xEE, 0xEF, 0x7E, 0x75, 0x56, 0xD5, 0x6E, 0x5D, 0xDD, 0xD5, 0xD6, 0x57, 0x5D, 0x55, 0x5D,
1680xA2, 0xEE, 0x23, 0x7F, 0xCC, 0xD4, 0x65, 0x6F, 0xDC, 0x44, 0x44, 0x57, 0xC4, 0xC4, 0xC4, 0x5D,
1690xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1700xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1710xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1720xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1730xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1740xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1750xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFD,
1760xC0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03,
1770xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1780xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1790xC0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
1800xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1810xAA, 0xA2, 0x26, 0x23, 0xD4, 0x45, 0xD5, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1820xAA, 0xAE, 0xEA, 0xB6, 0x46, 0xDD, 0xD5, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1830xA2, 0xA6, 0x66, 0xB7, 0xC6, 0xDD, 0xD5, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1840xAA, 0xAE, 0xEA, 0xB6, 0x56, 0xDD, 0xD5, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1850xAA, 0x22, 0xEA, 0xB7, 0xD4, 0x44, 0x6C, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1860xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1870xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1880xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1890xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1900xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1910xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1920xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1930xD5, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1940xD5, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1950xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1960xAA, 0xA2, 0x76, 0x2B, 0xC6, 0xC6, 0x44, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1970xAA, 0xAE, 0xAA, 0xEA, 0x5D, 0x55, 0xD5, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1980xA2, 0xA6, 0x6A, 0xE7, 0xCC, 0x56, 0xC5, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
1990xAA, 0xAE, 0xA2, 0xEA, 0x5D, 0x57, 0x5D, 0x7E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2000xAA, 0x22, 0x6A, 0x2B, 0xDD, 0x54, 0xDC, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2010xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2020xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2030xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2040xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2050xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2060xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2070xBF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
2080xC0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
2090xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
233 Wire.setClock(100000);
244 Wire.beginTransmission(0x3C);
245 uint8_t error = Wire.endTransmission();
249 display.begin(SH1106_SWITCHCAPVCC, 0x3C);
298 unsigned long cmdTime = millis();
302 if (millis() - cmdTime > 250) {
321 for (
unsigned int i = 0; i < pixelCount; i++){
325 if(color.
R > 0 || color.
G > 0 || color.
G > 0){
340 if (x >= 0 && x < 64 && y >= 0 && y < 32) {
341 int byteIndex = y * 8 + (x / 8);
342 int bitIndex = 7 - (x % 8);
387 display.getTextBounds(str, x, y, &x1, &y1, &w, &h);
390 display.fillRect(x, y - h + 1, w, h, 0);
Declares the HeadsUpDisplay class for rendering and displaying information on SSD1306/SH1106 displays...
Abstract base class for applying visual effects to pixel groups.
virtual void ApplyEffect(IPixelGroup *pixelGroup)=0
Pure virtual method for applying the effect to a pixel group.
void SetEffect(Effect *effect)
Sets the sub-effect to be applied to the display.
static const uint8_t faceYMaxPosition
Maximum Y position for face rendering.
static const uint16_t SCREEN_HEIGHT
Height of the OLED screen.
static const uint8_t faceXMinPosition
Minimum X position for face rendering.
void ApplyEffect(IPixelGroup *pixelGroup)
Applies the effect to the specified pixel group.
void UpdateFaceInformation()
Updates face rendering information.
const __FlashStringHelper * hueArray[10]
Hue options.
bool useExternalFace
To decide if it uses faceArray or faceNames for the face.
static uint8_t faceBitmap[bufferSize]
Background template for displaying the grids.
static const uint8_t faceYMinPosition
Minimum Y position for face rendering.
bool splashFinished
True when the splash startup screen is finished.
const __FlashStringHelper * colorArray[10]
const __FlashStringHelper * faceArray[10]
Face names.
TimeStep timeStep
Limits the display to update 5 times per second.
const __FlashStringHelper * effectArray[10]
static const uint16_t SCREEN_WIDTH
Width of the OLED screen.
void SetFaceMin(Vector2D faceMin)
Sets the minimum face rendering coordinates.
void Initialize()
Initializes the display and related components.
Effect * subEffect
Used to capture the complete rendered frame.
static const uint8_t CoelaSplash[]
static const uint8_t faceXMaxPosition
Maximum X position for face rendering.
void EnableBitFaceRender(float xIn, float yIn)
Enables rendering for a bitmap face within specified coordinates.
const __FlashStringHelper ** faceNames
Names of each face to be displayed on the screen.
void SetFaceMax(Vector2D faceMax)
Sets the maximum face rendering coordinates.
static Adafruit_SSD1306 display
static const uint8_t FaceTemplate[]
const __FlashStringHelper * onOffArray[2]
Online/Offline statuses.
void CheckInvertPrintText(int16_t x, int16_t y, uint8_t menu, const String &str)
Prints text conditionally inverted based on menu selection.
uint32_t startMillis
Start time of the display for the splash screen.
Vector2D faceMax
Maximum coordinate for face on display.
static const uint32_t splashTime
Duration for splash screen in milliseconds.
void ResetDisplayBuffer()
Resets the display buffer to a blank state.
void ResetI2CBus()
Resets the I2C bus in case of communication errors.
const __FlashStringHelper * percentArray[10]
Battery percentages.
static const uint8_t PrototracerSplash[]
bool didBegin
True if the I2C interface started correctly.
Vector2D faceMin
Minimum coordinate for face on display.
void Update()
Updates the display content based on the current state.
HeadsUpDisplay(Vector2D faceMin, Vector2D faceMax)
Constructs a HeadsUpDisplay with face rendering boundaries.
void SetFaceArray(const __FlashStringHelper **faceNames)
Sets the array of face names.
Interface for managing and interacting with a collection of pixels.
virtual Vector2D GetCoordinate(uint16_t count)=0
Retrieves the coordinate of a specific pixel.
virtual RGBColor * GetColor(uint16_t count)=0
Retrieves the color of a specific pixel.
virtual uint16_t GetPixelCount()=0
Retrieves the total number of pixels in the group.
static T ConstrainMap(T value, T inLow, T inMax, T outMin, T outMax)
Combines Constrain and Map in one step: first maps value from [inLow, inMax] to [outMin,...
Represents an RGB color and provides methods for manipulation.
uint8_t G
Green component of the color (0-255).
uint8_t R
Red component of the color (0-255).
bool IsReady()
Checks if the specified time interval has elapsed.
Represents a 2D vector (X, Y) and provides methods for vector arithmetic.
float X
The X-component of the 2D vector.
float Y
The Y-component of the 2D vector.