Files
crosspoint-reader-mod/lib/EpdFont/builtinFonts/ubuntu_10_regular.h

3239 lines
243 KiB
C
Raw Normal View History

Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
/**
* generated by fontconvert.py
* name: ubuntu_10_regular
* size: 10
* mode: 1-bit
* Command used: fontconvert.py ubuntu_10_regular 10 ../builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
*/
#pragma once
#include "EpdFontData.h"
static const uint8_t ubuntu_10_regularBitmaps[15447] = {
0xEE, 0xEE, 0xE6, 0x66, 0x66, 0x00, 0xEF, 0xE0, 0xEF, 0xDF, 0xBF, 0x6E, 0xC0, 0x1C, 0x61, 0xCE, 0x1C, 0xE1, 0x8E,
0xFF, 0xFF, 0xFF, 0x38, 0xC3, 0x9C, 0x31, 0xCF, 0xFF, 0xFF, 0xF7, 0x18, 0x73, 0x87, 0x38, 0x63, 0x80, 0x0C, 0x03,
0x03, 0xF9, 0xFE, 0xF1, 0xB8, 0x0E, 0x01, 0xE0, 0x7E, 0x07, 0xE0, 0x78, 0x07, 0x01, 0xF8, 0xFF, 0xFB, 0xFC, 0x0C,
0x03, 0x00, 0xC0, 0x7C, 0x38, 0xEE, 0x38, 0xC6, 0x70, 0xC6, 0x70, 0xC6, 0xE0, 0xEE, 0xC0, 0x7D, 0xC0, 0x01, 0x80,
0x03, 0xBE, 0x03, 0x77, 0x07, 0x63, 0x0E, 0x63, 0x0E, 0x63, 0x1C, 0x77, 0x1C, 0x3E, 0x0F, 0x80, 0x7F, 0x03, 0xDC,
0x0E, 0x30, 0x39, 0xC0, 0x6E, 0x01, 0xF8, 0x07, 0x80, 0x3F, 0x19, 0xCE, 0xE6, 0x1F, 0x18, 0x3C, 0x78, 0xF1, 0xFF,
0xE3, 0xF9, 0xC0, 0xFF, 0xFE, 0x1C, 0x73, 0x8C, 0x71, 0xC6, 0x38, 0xE3, 0x8E, 0x38, 0xE1, 0x87, 0x1C, 0x30, 0xE1,
0xC7, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x86, 0x18, 0x71, 0xC6, 0x18, 0xE3, 0x8E, 0x71, 0xCE, 0x30, 0x0C, 0x03, 0x06,
0xD9, 0xFE, 0x1E, 0x07, 0x83, 0xF0, 0xCC, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03,
0x00, 0x77, 0x76, 0x60, 0xFF, 0xF0, 0xFF, 0x80, 0x01, 0xC0, 0x60, 0x38, 0x0E, 0x03, 0x01, 0xC0, 0x70, 0x18, 0x0E,
0x03, 0x81, 0xC0, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x06, 0x03, 0x80, 0x3F, 0x1F, 0xE7, 0x3B, 0x87,
0xE1, 0xF8, 0x7E, 0x1F, 0x07, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x73, 0x9F, 0xE3, 0xF0, 0x0E, 0x3D, 0xFB, 0xF7, 0xE1,
0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x80, 0x7E, 0x3F, 0xCE, 0x78, 0x0E, 0x03, 0x80, 0xE0, 0x70, 0x3C,
0x1E, 0x0F, 0x03, 0x81, 0xC0, 0xE0, 0x3F, 0xFF, 0xFC, 0x7E, 0x3F, 0xC6, 0x78, 0x0E, 0x03, 0x81, 0xE3, 0xF0, 0xFC,
0x07, 0x80, 0x60, 0x1C, 0x07, 0xC7, 0xBF, 0xEF, 0xE0, 0x03, 0xC0, 0x78, 0x1F, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x73,
0x8E, 0x61, 0xDF, 0xFF, 0xFF, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x7F, 0x9F, 0xE7, 0x01, 0xC0, 0x70, 0x1F, 0x87,
0xF0, 0x7E, 0x03, 0x80, 0x70, 0x1C, 0x07, 0xE7, 0xBF, 0xEF, 0xE0, 0x07, 0x87, 0xE3, 0xF1, 0xC0, 0x60, 0x3F, 0xCF,
0xFB, 0xCF, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x73, 0xDF, 0xE3, 0xF0, 0xFF, 0xFF, 0xF0, 0x1C, 0x0E, 0x07, 0x01, 0xC0,
0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x60, 0x38, 0x0E, 0x03, 0x80, 0x3F, 0x1F, 0xEF, 0x3B, 0x87, 0xE1, 0xFC, 0xE7,
0xF8, 0xFC, 0x7F, 0xB8, 0xFE, 0x1F, 0x87, 0xF3, 0xDF, 0xE3, 0xF0, 0x3F, 0x1F, 0xEF, 0x7B, 0x87, 0xE1, 0xF8, 0x7F,
0x3D, 0xFF, 0x3F, 0xC0, 0x60, 0x38, 0x1E, 0x1F, 0x1F, 0x87, 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00,
0x00, 0x07, 0x77, 0x66, 0x01, 0xC3, 0xF7, 0xFB, 0xF0, 0xF0, 0x3F, 0x07, 0xF8, 0x3F, 0x01, 0xC0, 0xFF, 0xFF, 0xF0,
0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0xE0, 0x3F, 0x07, 0xF8, 0x3F, 0x03, 0xC3, 0xF7, 0xFB, 0xF0, 0xE0, 0x00, 0xFE,
0xFF, 0x6F, 0x07, 0x07, 0x06, 0x0E, 0x1C, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x38, 0x07, 0xF8, 0x03, 0xFF, 0x81,
0xF3, 0xF0, 0xE0, 0x1C, 0x70, 0x03, 0x9C, 0x7E, 0x6E, 0x7F, 0x9F, 0x9E, 0xE7, 0xE6, 0x19, 0xFB, 0x86, 0x7E, 0xE1,
0x9F, 0xB8, 0x67, 0xE7, 0xBB, 0xB9, 0xFF, 0xE7, 0x3F, 0xF1, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC6, 0x00, 0xFF, 0x80,
0x1F, 0xE0, 0x07, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x18, 0x38, 0x70, 0xFF,
0xC7, 0xFF, 0x1C, 0x0E, 0x60, 0x3B, 0x80, 0x7E, 0x01, 0xC0, 0x7F, 0x8F, 0xFC, 0xE3, 0xEE, 0x0E, 0xE0, 0xEE, 0x3E,
0xFF, 0xCF, 0xFE, 0xE1, 0xEE, 0x07, 0xE0, 0x7E, 0x07, 0xE1, 0xEF, 0xFE, 0x7F, 0x80, 0x0F, 0xE3, 0xFF, 0x7C, 0x67,
0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x7C, 0x63, 0xFF, 0x0F, 0xE0, 0x7F,
0x87, 0xFF, 0x38, 0xFD, 0xC0, 0xEE, 0x07, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0xEE,
0x3F, 0x7F, 0xF1, 0xFE, 0x00, 0xFF, 0xDF, 0xFB, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3F, 0xE7, 0xFC, 0xE0, 0x1C, 0x03,
0x80, 0x70, 0x0E, 0x01, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xE0, 0x38, 0x0F, 0xFB, 0xFE, 0xE0, 0x38,
0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x00, 0x0F, 0xE3, 0xFF, 0x7C, 0x77, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00,
0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x7C, 0x73, 0xFF, 0x0F, 0xF0, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E,
0x03, 0xFF, 0xFF, 0xFF, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xF8, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x7E, 0x7F, 0xF9, 0xF8,
0xE0, 0xF7, 0x07, 0x38, 0x71, 0xC7, 0x0E, 0x70, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFE, 0x07, 0x78, 0x39, 0xE1, 0xC7,
0x8E, 0x1E, 0x70, 0x7B, 0x81, 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E,
0x03, 0x80, 0xE0, 0x3F, 0xFF, 0xFC, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x78, 0x1F, 0x6C, 0x3F, 0x6C, 0x37, 0x66,
0x37, 0xE6, 0x67, 0xE7, 0x67, 0xE3, 0xE7, 0xE3, 0xC7, 0xE3, 0xC7, 0xE1, 0xC7, 0xE0, 0x07, 0xE0, 0x03, 0xE0, 0x3F,
0x81, 0xFE, 0x0F, 0xF8, 0x7F, 0xC3, 0xF7, 0x1F, 0x9C, 0xFC, 0x77, 0xE3, 0xBF, 0x0F, 0xF8, 0x3F, 0xC1, 0xFE, 0x07,
0xF0, 0x3F, 0x80, 0xE0, 0x0F, 0xE0, 0x7F, 0xE1, 0xF3, 0xE3, 0x81, 0xEE, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x06,
0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x73, 0x81, 0xE7, 0xCF, 0x87, 0xFE, 0x03, 0xF8, 0x00, 0x7F, 0x8F, 0xFC, 0xE3, 0xEE,
0x0E, 0xE0, 0xEE, 0x0E, 0xE3, 0xEF, 0xFC, 0xFF, 0x8E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x00, 0x0F,
0xE0, 0x7F, 0xE1, 0xF3, 0xE3, 0x81, 0xEE, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x06, 0xE0, 0x1D, 0xC0, 0x3B, 0x80,
0x73, 0x81, 0xE7, 0xCF, 0x87, 0xFE, 0x03, 0xF8, 0x01, 0xC0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x7F, 0x8F, 0xFC,
0xE3, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE3, 0xEF, 0xFC, 0xFF, 0x8E, 0x38, 0xE3, 0xCE, 0x1C, 0xE0, 0xEE, 0x0E, 0xE0,
0x70, 0x1F, 0xCF, 0xF9, 0xE7, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3C, 0x03, 0x80, 0x77, 0x3F,
0xFF, 0x9F, 0xE0, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06,
0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07,
0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE, 0x1F, 0xC0, 0xE0, 0x1F, 0x80, 0xE7, 0x03, 0x9C, 0x0E, 0x70,
0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x38, 0x1C, 0xE0, 0x73, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0x80, 0x1E, 0x00, 0x70, 0x00,
0xE0, 0x00, 0xFC, 0x00, 0x1D, 0xC3, 0x83, 0xB8, 0x78, 0x77, 0x0F, 0x0C, 0xE3, 0xE3, 0x9C, 0x7E, 0x71, 0xCD, 0xCE,
0x3B, 0x99, 0xC7, 0x73, 0xB0, 0xEC, 0x7E, 0x0F, 0x87, 0xC1, 0xF0, 0xF8, 0x3C, 0x1E, 0x03, 0x81, 0xC0, 0x70, 0x7B,
0x83, 0x8E, 0x38, 0x3B, 0xC1, 0xDC, 0x07, 0xC0, 0x1E, 0x00, 0xE0, 0x0F, 0x80, 0x7E, 0x07, 0x70, 0x71, 0xC3, 0x87,
0x38, 0x3B, 0x80, 0xE0, 0xE0, 0x3B, 0x83, 0x9C, 0x38, 0x71, 0xC3, 0x9C, 0x0E, 0xE0, 0x7E, 0x01, 0xF0, 0x07, 0x00,
0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x7F, 0xE7, 0xFE, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x78,
0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, 0x63, 0x18,
0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x3F, 0xF0, 0xE0, 0x18, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C,
0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x18, 0x07, 0xFF, 0xC6, 0x31, 0x8C, 0x63,
0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xFF, 0xF0, 0x0E, 0x01, 0xE0, 0x7E, 0x0D, 0xC3, 0x9C, 0x63, 0x9C, 0x3B, 0x03,
0x7F, 0xF7, 0xFF, 0xC7, 0x1C, 0x60, 0x3F, 0x0F, 0xE3, 0x3C, 0x07, 0x3F, 0xDF, 0xF7, 0x9D, 0x87, 0x71, 0xDF, 0xF3,
0xFC, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xFE, 0x3F, 0xE7, 0x9E, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D,
0xC7, 0xBF, 0xE7, 0xF8, 0x3F, 0x3F, 0xBE, 0x5C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xF9, 0x3F, 0xCF, 0xE0, 0x01, 0xC0,
0x70, 0x1C, 0x07, 0x01, 0xCF, 0xF7, 0xFF, 0xCF, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xFE, 0x77, 0xFC, 0xFF, 0x3F,
0x1F, 0xEF, 0x3F, 0x87, 0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xF9, 0x9F, 0xE3, 0xF8, 0x3F, 0x7E, 0x72, 0xE0, 0xE0, 0xFE,
0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x3F, 0xDF, 0xFF, 0x9F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F,
0x87, 0xF3, 0xDF, 0xF3, 0xFC, 0x07, 0x63, 0xBF, 0xEF, 0xF0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3F, 0xCF, 0xFB,
0xCF, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x70,
0x00, 0x00, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0xFF, 0xBE, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0,
0x38, 0xEE, 0x73, 0xBC, 0xEE, 0x3F, 0x0F, 0x83, 0xF0, 0xEE, 0x39, 0xCE, 0x3B, 0x87, 0xE7, 0x39, 0xCE, 0x73, 0x9C,
0xE7, 0x39, 0xCE, 0x79, 0xEE, 0xFF, 0xFC, 0xFF, 0xFE, 0xE7, 0xCF, 0xE3, 0x87, 0xE1, 0x87, 0xE1, 0x87, 0xE1, 0x87,
0xE1, 0x87, 0xE1, 0x87, 0xE1, 0x87, 0xE1, 0x87, 0xFF, 0x3F, 0xEE, 0x3F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1,
0xF8, 0x7E, 0x1C, 0x3F, 0x0F, 0xF3, 0xEF, 0x70, 0xEE, 0x0F, 0xC1, 0xF8, 0x3F, 0x0E, 0xF3, 0xCF, 0xF0, 0xFC, 0x00,
0xFF, 0x1F, 0xF3, 0x8F, 0x70, 0xEE, 0x0F, 0xC1, 0xF8, 0x3F, 0x0E, 0xF3, 0xDF, 0xF3, 0xFC, 0x70, 0x0E, 0x01, 0xC0,
0x38, 0x00, 0x3F, 0xDF, 0xFF, 0x9F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xF3, 0xDF, 0xF3, 0xFC, 0x07, 0x01, 0xC0,
0x70, 0x1C, 0x7F, 0xFF, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x80, 0x3F, 0x3F, 0x9C, 0xCE, 0x07, 0xC1, 0xF8,
0x3E, 0x07, 0x47, 0xBF, 0xDF, 0xC0, 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF2, 0x7E,
0x7E, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0xE0, 0xDC, 0x39, 0x87,
0x38, 0xE7, 0x38, 0x67, 0x0E, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0xE1, 0xC7, 0xE1, 0xC7, 0x63, 0xC7, 0x73,
0xC6, 0x73, 0xEE, 0x33, 0xEE, 0x3F, 0x6C, 0x3E, 0x7C, 0x1E, 0x7C, 0x1E, 0x38, 0x1C, 0x38, 0xE1, 0xCE, 0x70, 0xEE,
0x0F, 0x81, 0xE0, 0x1C, 0x07, 0xC1, 0xF8, 0x73, 0x8E, 0x3B, 0x83, 0x00, 0xE0, 0xDC, 0x39, 0xC7, 0x38, 0xC7, 0x18,
0x77, 0x0E, 0xE0, 0xD8, 0x1F, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xC1, 0xF8, 0x3E, 0x00, 0x7F, 0x9F, 0xE0, 0x38, 0x1C,
0x0E, 0x07, 0x03, 0x81, 0xE0, 0x70, 0x3F, 0xEF, 0xF8, 0x0E, 0x3C, 0x71, 0xC3, 0x87, 0x0E, 0x1C, 0x79, 0xE3, 0xE3,
0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x38, 0x78, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xE1, 0xC1, 0xC3, 0x87, 0x0E,
0x1C, 0x3C, 0x3C, 0xF9, 0xE3, 0x87, 0x0E, 0x1C, 0x38, 0xE3, 0xC7, 0x00, 0x3C, 0x6F, 0xFD, 0xBF, 0xB1, 0xE0, 0xEF,
0xE0, 0x06, 0x66, 0x66, 0xEE, 0xEE, 0xE0, 0x0E, 0x03, 0x80, 0xE0, 0x7E, 0x3F, 0x9E, 0x67, 0x01, 0x80, 0xE0, 0x18,
0x07, 0x01, 0xE2, 0x3F, 0x87, 0xE0, 0xE0, 0x38, 0x0E, 0x00, 0x0F, 0xC7, 0xF3, 0xC8, 0xE0, 0x38, 0x0E, 0x03, 0x83,
0xFE, 0xFF, 0x8E, 0x03, 0x00, 0xC0, 0x30, 0x1F, 0xF7, 0xFC, 0x60, 0x6F, 0xFC, 0xFF, 0x1C, 0xE3, 0x0C, 0x61, 0x8E,
0x71, 0xFE, 0x7F, 0xEC, 0x0C, 0xE0, 0x77, 0x0E, 0x70, 0xE3, 0x9C, 0x1B, 0x81, 0xF8, 0x0F, 0x07, 0xFE, 0x7F, 0xE0,
0x60, 0x06, 0x07, 0xFE, 0x7F, 0xE0, 0x60, 0x06, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x1F, 0x8F, 0xE7, 0x99, 0xC0,
0x38, 0x0F, 0x87, 0xF9, 0x8F, 0x61, 0xD8, 0x77, 0x98, 0xFE, 0x1F, 0x00, 0xE0, 0x19, 0x8E, 0x7F, 0x9F, 0xC0, 0x66,
0x66, 0x0F, 0xE0, 0x3F, 0xF0, 0xF1, 0xE3, 0x80, 0xE6, 0x7E, 0xFD, 0xC9, 0xF3, 0x01, 0xEE, 0x03, 0xCC, 0x07, 0xDC,
0x9D, 0x9F, 0xBB, 0x80, 0xE3, 0xC7, 0x83, 0xFF, 0x03, 0xF8, 0x00, 0x7C, 0x2E, 0x06, 0x7E, 0x66, 0xE6, 0x66, 0x7E,
0x19, 0xCE, 0x73, 0xB9, 0xDC, 0xE7, 0x1D, 0xC3, 0xB8, 0xE7, 0x19, 0xC0, 0xFF, 0xFF, 0xF0, 0x0C, 0x03, 0x00, 0xC0,
0x30, 0x0C, 0x03, 0xFF, 0xF0, 0x0F, 0xE0, 0x3F, 0xF0, 0xF1, 0xE3, 0x80, 0xE6, 0xFC, 0xFD, 0x9D, 0xF3, 0x39, 0xE7,
0xE3, 0xCD, 0xC7, 0xD9, 0xDD, 0xB1, 0xBB, 0x80, 0xE3, 0xC7, 0x83, 0xFF, 0x03, 0xF8, 0x00, 0x7E, 0xFC, 0x7C, 0xFB,
0xBF, 0x77, 0xCF, 0x80, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x03, 0xFF,
0xFF, 0xC0, 0x7C, 0xD8, 0x38, 0xE3, 0xCF, 0x18, 0x3F, 0x7C, 0xD8, 0x31, 0xE0, 0xE0, 0xD3, 0xFE, 0x39, 0xDC, 0xC0,
0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xF9, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x0E, 0x00,
0x1F, 0xF3, 0xF7, 0x7F, 0x77, 0xF7, 0x7F, 0x77, 0xF7, 0x7F, 0x77, 0xF7, 0x3F, 0x70, 0xF7, 0x07, 0x70, 0x77, 0x07,
0x70, 0x77, 0x07, 0x70, 0x77, 0x07, 0x70, 0x77, 0x07, 0x70, 0xFF, 0x80, 0x33, 0x8F, 0xE0, 0x3F, 0xF3, 0x33, 0x33,
0x3E, 0x3B, 0x98, 0xEC, 0x76, 0x3B, 0x1D, 0xDC, 0x7C, 0x66, 0x1D, 0xC3, 0x38, 0xE7, 0x1D, 0xCE, 0x73, 0x39, 0xDC,
0x66, 0x00, 0x30, 0x18, 0x78, 0x1C, 0x3C, 0x0C, 0x06, 0x0E, 0x03, 0x0E, 0x01, 0x87, 0x00, 0xC7, 0x00, 0x63, 0x0E,
0x03, 0x87, 0x01, 0x87, 0x81, 0xC6, 0xC0, 0xC7, 0x60, 0xE3, 0xF8, 0x60, 0x18, 0x70, 0x0C, 0x30, 0x38, 0x78, 0x18,
0x3C, 0x1C, 0x06, 0x0C, 0x03, 0x0E, 0x01, 0x8E, 0x00, 0xC7, 0x00, 0x67, 0x3E, 0x03, 0x3B, 0x03, 0x81, 0x81, 0x81,
0xC1, 0xC1, 0xC0, 0xC1, 0xC0, 0xE0, 0xC0, 0x60, 0xFE, 0x7C, 0x0E, 0x1B, 0x07, 0x00, 0xC1, 0xC0, 0xF0, 0xE0, 0x0E,
0x30, 0x01, 0x9C, 0x04, 0xE6, 0x03, 0xF3, 0x8E, 0x00, 0xC3, 0x80, 0x71, 0xE0, 0x38, 0xD8, 0x0E, 0x76, 0x07, 0x1F,
0xC1, 0x80, 0x60, 0xE0, 0x18, 0x1C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x60, 0x30, 0x38, 0x38, 0x38, 0x18, 0x1C, 0x0F,
0x33, 0xF8, 0xFC, 0x06, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xC0, 0x00, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0xC0,
0x37, 0x01, 0xCC, 0x07, 0x38, 0x18, 0x60, 0xE1, 0xC3, 0xFF, 0x1F, 0xFC, 0x70, 0x39, 0x80, 0xEE, 0x01, 0xF8, 0x07,
0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x00, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0xC0, 0x37, 0x01, 0xCC,
0x07, 0x38, 0x18, 0x60, 0xE1, 0xC3, 0xFF, 0x1F, 0xFC, 0x70, 0x39, 0x80, 0xEE, 0x01, 0xF8, 0x07, 0x03, 0x00, 0x1E,
0x00, 0xFC, 0x03, 0x30, 0x00, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0xC0, 0x37, 0x01, 0xCC, 0x07, 0x38, 0x18,
0x60, 0xE1, 0xC3, 0xFF, 0x1F, 0xFC, 0x70, 0x39, 0x80, 0xEE, 0x01, 0xF8, 0x07, 0x0F, 0x60, 0x3F, 0x01, 0xBC, 0x00,
0x00, 0x07, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x18, 0x38, 0x70, 0xFF, 0xC7,
0xFF, 0x1C, 0x0E, 0x60, 0x3B, 0x80, 0x7E, 0x01, 0xC0, 0x0C, 0xC0, 0x33, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x80, 0x1E,
0x00, 0xFC, 0x03, 0x70, 0x1C, 0xC0, 0x73, 0x81, 0x86, 0x0E, 0x1C, 0x3F, 0xF1, 0xFF, 0xC7, 0x03, 0x98, 0x0E, 0xE0,
0x1F, 0x80, 0x70, 0x07, 0x80, 0x1E, 0x00, 0xD8, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0xFC, 0x03, 0xF0, 0x1C, 0xC0,
0x73, 0x81, 0x8E, 0x0E, 0x1C, 0x3F, 0xF1, 0xFF, 0xC7, 0x03, 0x98, 0x0E, 0xE0, 0x1F, 0x80, 0x70, 0x00, 0xFF, 0xE0,
0x1F, 0xFC, 0x07, 0xC0, 0x01, 0xD8, 0x00, 0x3B, 0x00, 0x0E, 0x60, 0x01, 0x8F, 0xF0, 0x71, 0xFE, 0x1C, 0x30, 0x03,
0xFE, 0x00, 0xFF, 0xC0, 0x18, 0x18, 0x07, 0x03, 0x00, 0xC0, 0x7F, 0xF8, 0x0F, 0xF8, 0x0F, 0xE3, 0xFF, 0x7C, 0x67,
0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x7C, 0x63, 0xFF, 0x1F, 0xE0, 0x70,
0x03, 0x80, 0xF0, 0x18, 0x03, 0x80, 0x38, 0x03, 0x00, 0x01, 0xFF, 0xBF, 0xF7, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F,
0xCF, 0xF9, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xF0, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x00, 0x01,
0xFF, 0xBF, 0xF7, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0xCF, 0xF9, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF,
0xFF, 0xF0, 0x0C, 0x03, 0xC0, 0xFC, 0x19, 0x80, 0x01, 0xFF, 0xBF, 0xF7, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0xCF,
0xF9, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xF0, 0x3B, 0x87, 0x70, 0x00, 0x7F, 0xEF, 0xFD, 0xC0,
0x38, 0x07, 0x00, 0xE0, 0x1F, 0xF3, 0xFE, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xFF, 0xFF, 0xFC, 0xC7, 0x1C,
0x60, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE0, 0x33, 0xB9, 0x80, 0x73, 0x9C, 0xE7, 0x39, 0xCE,
0x73, 0x9C, 0xE7, 0x39, 0xC0, 0x18, 0x79, 0xFB, 0x30, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C,
0x38, 0x70, 0xE1, 0xC0, 0xEE, 0xEE, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x3F, 0xC0, 0x7F, 0xE0, 0xE3, 0xE1, 0x81, 0xC3, 0x01, 0xC6, 0x03, 0xBF, 0x87, 0x7F, 0x0E, 0x30,
0x1C, 0x60, 0x38, 0xC0, 0x71, 0x81, 0xC3, 0x8F, 0x87, 0xFE, 0x0F, 0xF0, 0x00, 0x0F, 0xC0, 0xFE, 0x06, 0xE0, 0x00,
0x0E, 0x03, 0xF8, 0x1F, 0xE0, 0xFF, 0x87, 0xFC, 0x3F, 0x71, 0xF9, 0xCF, 0xC7, 0x7E, 0x3B, 0xF0, 0xFF, 0x83, 0xFC,
0x1F, 0xE0, 0x7F, 0x03, 0xF8, 0x0E, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x00, 0x01, 0xFC, 0x0F, 0xFC,
0x3E, 0x7C, 0x70, 0x3D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x00, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C,
0xF9, 0xF0, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x18, 0x00, 0x00, 0x01, 0xFC, 0x0F, 0xFC,
0x3E, 0x7C, 0x70, 0x3D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x00, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C,
0xF9, 0xF0, 0xFF, 0xC0, 0x7F, 0x00, 0x03, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0x66, 0x00, 0x00, 0x01, 0xFC, 0x0F, 0xFC,
0x3E, 0x7C, 0x70, 0x3D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x00, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C,
0xF9, 0xF0, 0xFF, 0xC0, 0x7F, 0x00, 0x0F, 0x60, 0x1F, 0xC0, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0x3E,
0x38, 0x1E, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0x6E, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x38, 0x1E, 0x7C, 0xF8,
0x7F, 0xE0, 0x3F, 0x80, 0x0E, 0xE0, 0x1D, 0xC0, 0x00, 0x00, 0x7F, 0x03, 0xFF, 0x0F, 0x9F, 0x1C, 0x0F, 0x70, 0x0E,
0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x37, 0x00, 0xEE, 0x01, 0xDC, 0x03, 0x9C, 0x0F, 0x3E, 0x7C, 0x3F, 0xF0, 0x1F, 0xC0,
0x41, 0x18, 0xE7, 0xF8, 0xFC, 0x1E, 0x0F, 0xC7, 0xF9, 0x8E, 0x41, 0x00, 0x0F, 0xFC, 0x7F, 0xF9, 0xF3, 0xE3, 0x83,
0xEE, 0x0F, 0xDC, 0x3B, 0xB8, 0x77, 0x71, 0xC6, 0xE7, 0x0D, 0xDC, 0x3B, 0xF0, 0x73, 0xC1, 0xE7, 0xCF, 0x8F, 0xFE,
0x1B, 0xF8, 0x00, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x01, 0x80, 0x38, 0x07, 0x00,
0x60, 0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07,
0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x06, 0x00, 0xF0, 0x1F, 0x81, 0x98, 0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x1D, 0xC1,
0xDC, 0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07,
0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x01, 0x80, 0x1C, 0x01, 0xC0, 0x0C, 0x00, 0x00, 0x70, 0x1D, 0xC1, 0xCE, 0x1C,
0x38, 0xE1, 0xCE, 0x07, 0x70, 0x3F, 0x00, 0xF8, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E,
0x00, 0xE0, 0x0E, 0x00, 0xFF, 0x8F, 0xFC, 0xE3, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x3E, 0xFF, 0xCF, 0xF8,
0xE0, 0x0E, 0x00, 0xE0, 0x00, 0x3F, 0x07, 0xF8, 0x7B, 0xCE, 0x1C, 0xE1, 0x8E, 0x38, 0xE7, 0x0E, 0x60, 0xEF, 0x0E,
0x7C, 0xE3, 0xEE, 0x1E, 0xE0, 0x7E, 0xCF, 0xEF, 0xEE, 0xFC, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x00, 0x0F, 0xC3, 0xF8,
0xCF, 0x01, 0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x03, 0x01, 0xC0, 0xE0, 0x30, 0x00, 0x0F, 0xC3,
0xF8, 0xCF, 0x01, 0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x04, 0x03, 0x81, 0xF0, 0x64, 0x00, 0x0F,
0xC3, 0xF8, 0xCF, 0x01, 0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x1D, 0x8F, 0xE3, 0x70, 0x00, 0x00,
0x0F, 0xC3, 0xF8, 0xCF, 0x01, 0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x3B, 0x8E, 0xE0, 0x00, 0x00,
0x3F, 0x0F, 0xE3, 0x3C, 0x07, 0x3F, 0xDF, 0xF7, 0x9D, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x0E, 0x06, 0xC1, 0xB0, 0x38,
0x00, 0x0F, 0xC3, 0xF8, 0xCF, 0x01, 0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x3F, 0x3E, 0x1F, 0xFF,
0x8C, 0xFD, 0xE0, 0x38, 0x73, 0xFF, 0xFB, 0xFF, 0xFD, 0xE7, 0x00, 0xC3, 0x80, 0x71, 0xF1, 0x3F, 0xFF, 0x8F, 0xFF,
0xC0, 0x3F, 0x3F, 0xBE, 0x5C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xF9, 0x3F, 0xCF, 0xE1, 0x80, 0xE0, 0x70, 0xF8, 0x18,
0x0F, 0x01, 0xC0, 0x30, 0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x3E, 0x67, 0xF8, 0xFE,
0x06, 0x03, 0xC0, 0xE0, 0x30, 0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x3E, 0x67, 0xF8,
0xFE, 0x0C, 0x07, 0x83, 0xF0, 0xCC, 0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x3E, 0x67,
0xF8, 0xFE, 0x33, 0x0C, 0xC0, 0x00, 0x00, 0x3F, 0x1F, 0xEF, 0x3F, 0x87, 0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xF9, 0x9F,
0xE3, 0xF8, 0xC7, 0x1C, 0x60, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x33, 0xB9, 0x80, 0x73, 0x9C, 0xE7, 0x39,
0xCE, 0x73, 0x9C, 0x18, 0x79, 0xF3, 0x30, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0xEF, 0xDC,
0x00, 0x03, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x00, 0x07, 0xE1, 0xFC, 0x3E, 0x07, 0xE0, 0x1C,
0x7F, 0x9F, 0xF7, 0x9E, 0xE0, 0xFC, 0x1B, 0x03, 0x70, 0xEE, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8, 0x3D, 0x8F, 0xE7, 0xF0,
0x00, 0x00, 0x3F, 0xCF, 0xFB, 0x8F, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x18, 0x03, 0x80,
0x38, 0x03, 0x00, 0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8,
0x03, 0x00, 0xE0, 0x38, 0x06, 0x00, 0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7,
0x9F, 0xE1, 0xF8, 0x0C, 0x03, 0xC0, 0xFC, 0x19, 0x80, 0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC, 0x1F, 0x83, 0xF0,
0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8, 0x3D, 0x87, 0xF0, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC,
0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8, 0x3B, 0x87, 0x70, 0x00, 0x00, 0x03, 0xF0, 0xFF, 0x3E, 0xF7,
0x0E, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0xEF, 0x3C, 0xFF, 0x0F, 0xC0, 0x0C, 0x07, 0x80, 0xC0, 0x00, 0x00, 0x3F, 0xFF,
0xFC, 0x00, 0x00, 0x03, 0x01, 0xE0, 0x30, 0x3F, 0xCF, 0xFB, 0xCF, 0x71, 0xEE, 0x7F, 0x9D, 0xFF, 0x3F, 0xCE, 0x73,
0xDF, 0xF3, 0xFC, 0x00, 0x18, 0x0F, 0x01, 0xC0, 0x30, 0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87,
0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x06, 0x03, 0xC0, 0xE0, 0x30, 0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F,
0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x0C, 0x07, 0x83, 0xF0, 0xCC, 0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E,
0x1F, 0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x33, 0x0C, 0xC0, 0x00, 0x00, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8,
0x7E, 0x1F, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x00, 0x01, 0xC1, 0xB8, 0x73, 0x8E, 0x71,
0x8E, 0x30, 0xEE, 0x1D, 0xC1, 0xB0, 0x3E, 0x03, 0x80, 0x70, 0x0E, 0x03, 0x83, 0xF0, 0x7C, 0x00, 0xE0, 0x1C, 0x03,
0x80, 0x70, 0x0E, 0x01, 0xFE, 0x3F, 0xE7, 0x9E, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0xBF, 0xE7, 0xF8,
0xE0, 0x1C, 0x03, 0x80, 0x70, 0x00, 0x3B, 0x87, 0x70, 0x00, 0x00, 0x0E, 0x0D, 0xC3, 0x9C, 0x73, 0x8C, 0x71, 0x87,
0x70, 0xEE, 0x0D, 0x81, 0xF0, 0x1C, 0x03, 0x80, 0x70, 0x1C, 0x1F, 0x83, 0xE0, 0x00, 0x0F, 0xC0, 0x3F, 0x00, 0x00,
0x01, 0xC0, 0x07, 0x80, 0x1E, 0x00, 0xFC, 0x03, 0x70, 0x1C, 0xC0, 0x73, 0x81, 0x86, 0x0E, 0x1C, 0x3F, 0xF1, 0xFF,
0xC7, 0x03, 0x98, 0x0E, 0xE0, 0x1F, 0x80, 0x70, 0x3F, 0x8F, 0xE0, 0x00, 0x00, 0x3F, 0x0F, 0xE3, 0x3C, 0x07, 0x3F,
0xDF, 0xF7, 0x9D, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x0C, 0xC0, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x07, 0x00, 0x1E, 0x00,
0x78, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x18, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1C, 0x0E, 0x60, 0x3B,
0x80, 0x7E, 0x01, 0xC0, 0x3B, 0x87, 0xC1, 0xF0, 0x00, 0x00, 0x0F, 0xC3, 0xF8, 0xCF, 0x01, 0xCF, 0xF7, 0xFD, 0xE7,
0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x07, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x18,
0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1C, 0x0E, 0x60, 0x3B, 0x80, 0x7E, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03,
0xC0, 0x3F, 0x0F, 0xE3, 0x3C, 0x07, 0x3F, 0xDF, 0xF7, 0x9D, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x0E, 0x07, 0x00, 0xF0,
0x01, 0x80, 0x38, 0x07, 0x00, 0x60, 0x00, 0x00, 0xFE, 0x3F, 0xF7, 0xC6, 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0,
0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0xC6, 0x3F, 0xF0, 0xFE, 0x07, 0x07, 0x83, 0x81, 0x80, 0x01, 0xF9, 0xFD,
0xF2, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xC9, 0xFE, 0x7F, 0x03, 0x00, 0x78, 0x0F, 0xC0, 0xCC, 0x00, 0x00, 0xFE,
0x3F, 0xF7, 0xC6, 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0xC6, 0x3F,
0xF0, 0xFE, 0x0C, 0x0F, 0x0F, 0xC6, 0x60, 0x01, 0xF9, 0xFD, 0xF2, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xC9, 0xFE,
0x7F, 0x07, 0x00, 0x70, 0x07, 0x00, 0x00, 0x0F, 0xE3, 0xFF, 0x7C, 0x67, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00,
0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x7C, 0x63, 0xFF, 0x0F, 0xE0, 0x0C, 0x0F, 0x03, 0x00, 0x00, 0x01, 0xF9, 0xFD,
0xF2, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xC9, 0xFE, 0x7F, 0x0C, 0xC0, 0xFC, 0x07, 0x80, 0x30, 0x00, 0x00, 0xFE,
0x3F, 0xF7, 0xC6, 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0xC6, 0x3F,
0xF0, 0xFE, 0x33, 0x1F, 0x87, 0x81, 0x80, 0x01, 0xF9, 0xFD, 0xF2, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0xC9, 0xFE,
0x7F, 0x19, 0x80, 0xFC, 0x03, 0xC0, 0x0C, 0x00, 0x00, 0x3F, 0xC3, 0xFF, 0x9C, 0x7E, 0xE0, 0x77, 0x03, 0xF8, 0x0F,
0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x77, 0x1F, 0xBF, 0xF8, 0xFF, 0x00, 0x01, 0xD8, 0x07, 0x60,
0x1D, 0x80, 0x76, 0x01, 0xD8, 0xFF, 0x07, 0xFC, 0x3C, 0xF0, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3,
0xE7, 0x07, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0xE0, 0xE3, 0xE1, 0x81, 0xC3, 0x01, 0xC6, 0x03, 0xBF, 0x87, 0x7F,
0x0E, 0x30, 0x1C, 0x60, 0x38, 0xC0, 0x71, 0x81, 0xC3, 0x8F, 0x87, 0xFE, 0x0F, 0xF0, 0x00, 0x01, 0xC0, 0xFF, 0x0F,
0xF0, 0x1C, 0x01, 0xC3, 0xFC, 0x7F, 0xCF, 0x3C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCF, 0x9C, 0x7F, 0xC3,
0xFC, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xEF, 0xFD, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0xF3, 0xFE, 0x70, 0x0E, 0x01,
0xC0, 0x38, 0x07, 0x00, 0xFF, 0xFF, 0xFC, 0x7F, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x1F, 0xEF, 0x3F, 0x87, 0xFF, 0xFF,
0xFE, 0x03, 0x80, 0xF9, 0x9F, 0xE3, 0xF8, 0x33, 0x07, 0xE0, 0x78, 0x00, 0x0F, 0xFD, 0xFF, 0xB8, 0x07, 0x00, 0xE0,
0x1C, 0x03, 0xFE, 0x7F, 0xCE, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0xFF, 0xFF, 0x80, 0x33, 0x0F, 0xC1, 0xE0,
0x00, 0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x3E, 0x67, 0xF8, 0xFE, 0x0E, 0x01, 0xC0,
0x38, 0x00, 0x0F, 0xFD, 0xFF, 0xB8, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFE, 0x7F, 0xCE, 0x01, 0xC0, 0x38, 0x07, 0x00,
0xE0, 0x1F, 0xFF, 0xFF, 0x80, 0x0C, 0x07, 0x80, 0xC0, 0x00, 0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF, 0xFF,
0x80, 0xE0, 0x3E, 0x67, 0xF8, 0xFE, 0xFF, 0xDF, 0xFB, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3F, 0xE7, 0xFC, 0xE0, 0x1C,
0x03, 0x80, 0x70, 0x0E, 0x01, 0xFF, 0xFF, 0xF8, 0x0E, 0x03, 0x80, 0x70, 0x07, 0x80, 0x3F, 0x1F, 0xEF, 0x3F, 0x87,
0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xF9, 0x9F, 0xE3, 0xF8, 0x1C, 0x06, 0x01, 0xE0, 0x33, 0x07, 0xE0, 0x78, 0x06, 0x00,
0x01, 0xFF, 0xBF, 0xF7, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0xCF, 0xF9, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03,
0xFF, 0xFF, 0xF0, 0x33, 0x0F, 0xC1, 0xE0, 0x30, 0x00, 0x00, 0x03, 0xF1, 0xFE, 0xF3, 0xF8, 0x7F, 0xFF, 0xFF, 0xE0,
0x38, 0x0F, 0x99, 0xFE, 0x3F, 0x80, 0x03, 0x00, 0x78, 0x0F, 0xC0, 0xCC, 0x00, 0x00, 0xFE, 0x3F, 0xF7, 0xC7, 0x70,
0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0x70, 0x77, 0xC7, 0x3F, 0xF0, 0xFF, 0x0C, 0x07,
0x81, 0xF0, 0xCC, 0x00, 0x0F, 0xF7, 0xFF, 0xE7, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xFC, 0xF7, 0xFC, 0xFF, 0x01,
0xD8, 0xEF, 0xFB, 0xFC, 0x0C, 0xC0, 0xFC, 0x07, 0x80, 0x00, 0x0F, 0xE3, 0xFF, 0x7C, 0x77, 0x00, 0xE0, 0x0E, 0x00,
0xE0, 0x0E, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x7C, 0x73, 0xFF, 0x0F, 0xF0, 0x3B, 0x07, 0xC1, 0xF0, 0x00,
0x00, 0x0F, 0xF7, 0xFF, 0xE7, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xFC, 0xF7, 0xFC, 0xFF, 0x01, 0xD8, 0xEF, 0xFB,
0xFC, 0x03, 0x00, 0x70, 0x03, 0x00, 0x00, 0x0F, 0xE3, 0xFF, 0x7C, 0x77, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00,
0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x7C, 0x73, 0xFF, 0x0F, 0xF0, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x00, 0x0F, 0xF7,
0xFF, 0xE7, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xFC, 0xF7, 0xFC, 0xFF, 0x01, 0xD8, 0xEF, 0xFB, 0xFC, 0x0F, 0xE3,
0xFF, 0x7C, 0x77, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x7C, 0x73, 0xFF,
0x0F, 0xF0, 0x00, 0x07, 0x00, 0xF0, 0x0F, 0x00, 0x07, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x00, 0x03, 0xFD, 0xFF, 0xF9,
0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7F, 0x3D, 0xFF, 0x3F, 0xC0, 0x76, 0x3B, 0xFE, 0xFF, 0x00, 0x06, 0x00, 0x70,
0x0F, 0x81, 0x98, 0x00, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3F, 0xFF, 0xFF, 0xFE, 0x03, 0xE0,
0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0x30, 0x3E, 0x0D, 0x80, 0x00, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0,
0x3F, 0xCF, 0xFB, 0xCF, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x30, 0x1D, 0xFF, 0xFF, 0xFF,
0xF9, 0x80, 0xE3, 0x01, 0xC6, 0x03, 0x8F, 0xFF, 0x1F, 0xFE, 0x30, 0x1C, 0x60, 0x38, 0xC0, 0x71, 0x80, 0xE3, 0x01,
0xC6, 0x03, 0x8C, 0x07, 0x00, 0x70, 0x1F, 0xE3, 0xFC, 0x38, 0x07, 0x00, 0xFF, 0x1F, 0xF3, 0xCF, 0x70, 0xEE, 0x1D,
0xC3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x7E, 0xFE, 0xDE, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x7E, 0xFE, 0xDC, 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0xFC, 0x01, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C,
0x38, 0x70, 0xFF, 0xFC, 0x00, 0x03, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x00, 0xCF, 0xF7, 0x80,
0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x00, 0x6E, 0xFD, 0xF0, 0x00, 0x07, 0x0E, 0x1C,
0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0xE7, 0x3C,
0x77, 0x00, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7E, 0xEF, 0xEE, 0xE0, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8,
0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE7, 0x7B, 0x9F, 0xEE, 0x7F, 0x00, 0xE3, 0x71, 0xC0, 0x00, 0x00,
0x07, 0x1B, 0x8D, 0xC6, 0xE3, 0x71, 0xB8, 0xDC, 0x6E, 0x37, 0x1B, 0x8D, 0xC6, 0x03, 0x03, 0x87, 0xC3, 0xC0, 0x01,
0x80, 0x78, 0x1F, 0x83, 0x30, 0x00, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00,
0xE0, 0x1C, 0x03, 0x9C, 0xF3, 0xFC, 0x3F, 0x00, 0x0C, 0x1E, 0x3E, 0x33, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF8, 0xE0, 0xF7, 0x07, 0x38, 0x71, 0xC7, 0x0E, 0x70, 0x77, 0x03,
0xF0, 0x1F, 0x80, 0xFE, 0x07, 0x78, 0x39, 0xE1, 0xC7, 0x8E, 0x1E, 0x70, 0x7B, 0x81, 0xC0, 0x00, 0x06, 0x00, 0xF0,
0x07, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0xEE, 0x73, 0xBC, 0xEE, 0x3F, 0x0F, 0x83, 0xF0, 0xEE, 0x39,
0xCE, 0x3B, 0x87, 0x00, 0x07, 0x03, 0xC0, 0xE0, 0xE3, 0xF9, 0xEE, 0x73, 0xB8, 0xFC, 0x3E, 0x0F, 0xE3, 0xBC, 0xE7,
0xB8, 0xEE, 0x1C, 0x18, 0x0E, 0x07, 0x01, 0x80, 0x00, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0,
0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0F, 0xFF, 0xFF, 0x37, 0xBC, 0x0E, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C,
0xE7, 0x9E, 0xE0, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0,
0x3F, 0xFF, 0xFC, 0x00, 0x0E, 0x07, 0x01, 0xC0, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xE3,
0xCE, 0x00, 0xCF, 0x3C, 0xEE, 0x3B, 0x8E, 0xE3, 0xB8, 0xEC, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80,
0xE0, 0x3F, 0xFF, 0xFC, 0xEF, 0xBE, 0xFB, 0xEF, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xC7, 0x9C, 0xE0, 0x38, 0x0E,
0x03, 0x80, 0xE0, 0x38, 0x0E, 0x3B, 0x8E, 0xE3, 0xB8, 0x0E, 0x03, 0x80, 0xE0, 0x3F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87,
0x0E, 0x1C, 0x38, 0x77, 0xEF, 0xDF, 0x87, 0x0E, 0x1E, 0x1E, 0x38, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1D, 0x01,
0xF0, 0x1F, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xFF, 0x1F, 0xF0, 0x30, 0x60, 0xC1, 0x83,
0x06, 0x8F, 0x3C, 0xF1, 0xE0, 0xC1, 0x83, 0x07, 0x0F, 0x1E, 0x01, 0x80, 0x1C, 0x01, 0xC0, 0x0C, 0x00, 0x00, 0x70,
0x1F, 0xC0, 0xFF, 0x07, 0xFC, 0x3F, 0xE1, 0xFB, 0x8F, 0xCE, 0x7E, 0x3B, 0xF1, 0xDF, 0x87, 0xFC, 0x1F, 0xE0, 0xFF,
0x03, 0xF8, 0x1F, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0xE0, 0x30, 0x00, 0x3F, 0xCF, 0xFB, 0x8F, 0xE1, 0xF8, 0x7E, 0x1F,
0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE0, 0x3F, 0x81, 0xFE, 0x0F, 0xF8, 0x7F, 0xC3, 0xF7, 0x1F, 0x9C, 0xFC, 0x77,
0xE3, 0xBF, 0x0F, 0xF8, 0x3F, 0xC1, 0xFE, 0x07, 0xF0, 0x3F, 0x80, 0xE0, 0x00, 0x07, 0x00, 0x78, 0x03, 0x80, 0xFF,
0x3F, 0xEE, 0x3F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1C, 0x00, 0x0C, 0x0F, 0x01, 0xC0, 0x0C,
0xC0, 0x7C, 0x01, 0xE0, 0x06, 0x00, 0x00, 0x70, 0x1F, 0xC0, 0xFF, 0x07, 0xFC, 0x3F, 0xE1, 0xFB, 0x8F, 0xCE, 0x7E,
0x3B, 0xF1, 0xDF, 0x87, 0xFC, 0x1F, 0xE0, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0x70, 0x33, 0x0F, 0xC1, 0xE0, 0x30, 0x00,
0x3F, 0xCF, 0xFB, 0x8F, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x60, 0x1C, 0x03, 0x80, 0x60,
0x00, 0x00, 0xFF, 0x1F, 0xF3, 0x8F, 0x70, 0xEE, 0x1D, 0xC3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0x3F,
0x81, 0xFE, 0x0F, 0xF8, 0x7F, 0xC3, 0xF7, 0x1F, 0x9C, 0xFC, 0x77, 0xE3, 0xBF, 0x0F, 0xF8, 0x3F, 0xC1, 0xFE, 0x07,
0xF0, 0x1F, 0x80, 0xE0, 0x07, 0x00, 0x38, 0x07, 0x80, 0x3C, 0xFF, 0x3F, 0xEE, 0x3F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F,
0x87, 0xE1, 0xF8, 0x7E, 0x1C, 0x07, 0x01, 0xC1, 0xE0, 0x78, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x7F, 0x03, 0xFF,
0x0F, 0x9F, 0x1C, 0x0F, 0x70, 0x0E, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x37, 0x00, 0xEE, 0x01, 0xDC, 0x03, 0x9C, 0x0F,
0x3E, 0x7C, 0x3F, 0xF0, 0x1F, 0xC0, 0x3F, 0x87, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0xFF, 0x3E, 0xF7, 0x0E, 0xE0, 0xFC,
0x1F, 0x83, 0xF0, 0xEF, 0x3C, 0xFF, 0x0F, 0xC0, 0x0C, 0xC0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0xFE, 0x07, 0xFE,
0x1F, 0x3E, 0x38, 0x1E, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0x6E, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x38, 0x1E,
0x7C, 0xF8, 0x7F, 0xE0, 0x3F, 0x80, 0x3B, 0x07, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC,
0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8, 0x03, 0x30, 0x0E, 0xE0, 0x3B, 0x80, 0x26, 0x00, 0x00, 0x01,
0xFC, 0x0F, 0xFC, 0x3E, 0x7C, 0x70, 0x3D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x00, 0xDC, 0x03, 0xB8, 0x07, 0x70,
0x0E, 0x70, 0x3C, 0xF9, 0xF0, 0xFF, 0xC0, 0x7F, 0x00, 0x0C, 0xC3, 0xB8, 0xEE, 0x09, 0x80, 0x00, 0x7E, 0x1F, 0xE7,
0xDE, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8, 0x0F, 0xFF, 0xE3, 0xFF, 0xFE, 0x7E, 0x30,
0x07, 0x03, 0x00, 0xF0, 0x30, 0x0E, 0x03, 0x00, 0xE0, 0x3F, 0xCE, 0x03, 0xFC, 0xE0, 0x30, 0x0E, 0x03, 0x00, 0xF0,
0x30, 0x07, 0x03, 0x00, 0x7E, 0x30, 0x03, 0xFF, 0xFE, 0x0F, 0xFF, 0xE0, 0x3F, 0x3F, 0x1F, 0xFF, 0xEF, 0xBF, 0x3F,
0x87, 0x87, 0xE0, 0xFF, 0xF8, 0x3F, 0xFE, 0x0E, 0x03, 0x87, 0x80, 0xF3, 0xF9, 0x9F, 0xFF, 0xE3, 0xF1, 0xF8, 0x03,
0x00, 0x70, 0x0E, 0x00, 0xC0, 0x00, 0x07, 0xF8, 0xFF, 0xCE, 0x3E, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x3E, 0xFF, 0xCF,
0xF8, 0xE3, 0x8E, 0x3C, 0xE1, 0xCE, 0x0E, 0xE0, 0xEE, 0x07, 0x0C, 0x38, 0xE1, 0x80, 0x0F, 0xFF, 0xF1, 0xE1, 0xC3,
0x87, 0x0E, 0x1C, 0x38, 0x70, 0x7F, 0x8F, 0xFC, 0xE3, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE3, 0xEF, 0xFC, 0xFF, 0x8E,
0x38, 0xE3, 0xCE, 0x1C, 0xE0, 0xEE, 0x0E, 0xE0, 0x70, 0x00, 0x0E, 0x01, 0xE0, 0x1E, 0x00, 0x3F, 0x7F, 0x71, 0x70,
0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x70, 0xF0, 0xE0, 0x33, 0x03, 0xF0, 0x1E, 0x00, 0xC0, 0x00, 0x07,
0xF8, 0xFF, 0xCE, 0x3E, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x3E, 0xFF, 0xCF, 0xF8, 0xE3, 0x8E, 0x3C, 0xE1, 0xCE, 0x0E,
0xE0, 0xEE, 0x07, 0x66, 0xFC, 0xF0, 0xC0, 0x0F, 0xFF, 0xF1, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x03, 0x00,
0xE0, 0x38, 0x06, 0x00, 0x00, 0x3F, 0x9F, 0xF3, 0xCE, 0x70, 0x0E, 0x01, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x78,
0x07, 0x00, 0xEE, 0x7F, 0xFF, 0x3F, 0xC0, 0x06, 0x07, 0x07, 0x03, 0x00, 0x01, 0xF9, 0xFC, 0xE6, 0x70, 0x3E, 0x0F,
0xC1, 0xF0, 0x3A, 0x3D, 0xFE, 0xFE, 0x06, 0x01, 0xE0, 0x7E, 0x0C, 0xC0, 0x00, 0x3F, 0x9F, 0xF3, 0xCE, 0x70, 0x0E,
0x01, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x78, 0x07, 0x00, 0xEE, 0x7F, 0xFF, 0x3F, 0xC0, 0x0C, 0x0F, 0x0F, 0xC6,
0x60, 0x01, 0xF9, 0xFC, 0xE6, 0x70, 0x3E, 0x0F, 0xC1, 0xF0, 0x3A, 0x3D, 0xFE, 0xFE, 0x1F, 0xCF, 0xF9, 0xE7, 0x38,
0x07, 0x00, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3C, 0x03, 0x80, 0x77, 0x3F, 0xFF, 0x9F, 0xE0, 0x70, 0x06, 0x03,
0xC0, 0x3F, 0x3F, 0x9C, 0xCE, 0x07, 0xC1, 0xF8, 0x3E, 0x07, 0x47, 0xBF, 0x9F, 0xC3, 0x80, 0xC1, 0xE0, 0x19, 0x83,
0xF0, 0x3C, 0x03, 0x00, 0x00, 0x3F, 0x9F, 0xF3, 0xCE, 0x70, 0x0E, 0x01, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x78,
0x07, 0x00, 0xEE, 0x7F, 0xFF, 0x3F, 0xC0, 0x33, 0x1F, 0x07, 0x81, 0x80, 0x01, 0xF9, 0xFC, 0xE6, 0x70, 0x3E, 0x0F,
0xC1, 0xF0, 0x3A, 0x3D, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06,
0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x07, 0x01, 0xE0, 0xE0, 0xE0, 0xE0, 0xFE, 0xFE,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF2, 0x7E, 0x7E, 0x18, 0x1C, 0x3C, 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x00,
0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00,
0x60, 0x06, 0x00, 0x60, 0x0C, 0x0C, 0xEC, 0xEC, 0xE0, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF2, 0x7E,
0x7E, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x03, 0xFC, 0x3F, 0xC0, 0x60, 0x06, 0x00, 0x60,
0x06, 0x00, 0x60, 0x06, 0x00, 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xFE, 0xFE, 0xE0, 0xF2, 0x7E, 0x7E,
0x1E, 0xC1, 0xFC, 0x1F, 0x80, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE, 0x1F, 0xC0, 0x3D, 0x8F, 0xC6, 0xF0, 0x00, 0x00, 0x38, 0x7E, 0x1F,
0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x1F, 0xC1, 0xFC, 0x00, 0x0E, 0x07, 0xE0, 0x7E,
0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC,
0x3F, 0x0F, 0xC0, 0x00, 0x00, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x71, 0xDF, 0xF3, 0xFC,
0x1D, 0x81, 0xF8, 0x0F, 0x00, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE, 0x1F, 0xC0, 0x33, 0x0F, 0xC1, 0xE0, 0x00, 0x00, 0x38, 0x7E, 0x1F,
0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x0F, 0x00, 0xD8, 0x0D, 0x80, 0xF0, 0xE0, 0x7E,
0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE,
0x1F, 0xC0, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDC,
0x77, 0xFC, 0xFF, 0x06, 0x60, 0xEE, 0x0D, 0xC0, 0x98, 0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x0D, 0x87, 0x63, 0xB8, 0xCC,
0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE, 0x1F, 0x80,
0x70, 0x07, 0x00, 0x78, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x0E,
0x07, 0x00, 0xF0, 0x00, 0x60, 0x00, 0x1E, 0x00, 0x07, 0xE0, 0x00, 0xCC, 0x00, 0x00, 0x01, 0xC0, 0x01, 0xF8, 0x00,
0x3B, 0x87, 0x07, 0x70, 0xF0, 0xEE, 0x1E, 0x19, 0xC7, 0xC7, 0x38, 0xFC, 0xE3, 0x9B, 0x9C, 0x77, 0x33, 0x8E, 0xE7,
0x61, 0xD8, 0xFC, 0x1F, 0x0F, 0x83, 0xE1, 0xF0, 0x78, 0x3C, 0x07, 0x03, 0x80, 0x01, 0x80, 0x03, 0xC0, 0x07, 0xE0,
0x06, 0x60, 0x00, 0x00, 0xE1, 0xC7, 0xE1, 0xC7, 0x63, 0xC7, 0x73, 0xC6, 0x73, 0xEE, 0x33, 0xEE, 0x3F, 0x6C, 0x3E,
0x7C, 0x1E, 0x7C, 0x1E, 0x38, 0x1C, 0x38, 0x06, 0x00, 0x78, 0x07, 0xE0, 0x33, 0x00, 0x00, 0x70, 0x1D, 0xC1, 0xCE,
0x1C, 0x38, 0xE1, 0xCE, 0x07, 0x70, 0x3F, 0x00, 0xF8, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0,
0x0E, 0x00, 0x04, 0x01, 0xC0, 0x7C, 0x08, 0x80, 0x01, 0xC1, 0xB8, 0x73, 0x8E, 0x71, 0x8E, 0x30, 0xEE, 0x1D, 0xC1,
0xB0, 0x3E, 0x03, 0x80, 0x70, 0x0E, 0x03, 0x83, 0xF0, 0x7C, 0x00, 0x1D, 0xC0, 0xEE, 0x00, 0x01, 0xC0, 0x77, 0x07,
0x38, 0x70, 0xE3, 0x87, 0x38, 0x1D, 0xC0, 0xFC, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07,
0x00, 0x38, 0x00, 0x03, 0x80, 0x38, 0x07, 0x00, 0x60, 0x00, 0x07, 0xFE, 0x7F, 0xE0, 0x0E, 0x01, 0xC0, 0x38, 0x07,
0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x06, 0x03, 0x81, 0xC0, 0x60,
0x00, 0x1F, 0xE7, 0xF8, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x78, 0x1C, 0x0F, 0xFB, 0xFE, 0x06, 0x00, 0x70, 0x06,
0x00, 0x00, 0x7F, 0xE7, 0xFE, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x78, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07,
0x00, 0x70, 0x0F, 0xFF, 0xFF, 0xF0, 0x1C, 0x07, 0x01, 0xC0, 0x00, 0x00, 0x1F, 0xE7, 0xF8, 0x0E, 0x07, 0x03, 0x81,
0xC0, 0xE0, 0x78, 0x1C, 0x0F, 0xFB, 0xFE, 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x00, 0x07, 0xFE, 0x7F, 0xE0, 0x0E,
0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x33,
0x0F, 0xC1, 0xE0, 0x30, 0x00, 0x1F, 0xE7, 0xF8, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x78, 0x1C, 0x0F, 0xFB, 0xFE,
0x3F, 0x7E, 0x70, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x0E, 0x00,
0x18, 0x3F, 0xF1, 0xFF, 0xE7, 0xCF, 0x8E, 0x07, 0xB8, 0x07, 0x70, 0x0E, 0xE0, 0x1D, 0xC0, 0x1B, 0x80, 0x77, 0x00,
0xEE, 0x01, 0xCE, 0x07, 0x9F, 0x3E, 0x1F, 0xF8, 0x0F, 0xE0, 0x00, 0x70, 0x06, 0x3F, 0x67, 0xFE, 0xFB, 0xCE, 0x1C,
0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x1C, 0xF3, 0xC7, 0xF8, 0x3F, 0x00, 0x00, 0x0E, 0x00, 0x1F, 0x81, 0xF7, 0x03, 0x8E,
0x07, 0x1C, 0x0E, 0x38, 0x1C, 0x70, 0x38, 0xE0, 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x8E, 0x07, 0x0E, 0x0E, 0x1E,
0x78, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x30, 0x07, 0xE1, 0xFE, 0x1E, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE,
0x1C, 0x71, 0xC7, 0xFC, 0x3F, 0xC0, 0x00, 0x00, 0x66, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x60,
0x7F, 0x81, 0xFF, 0xBF, 0xF8, 0x7F, 0xEE, 0x3F, 0x00, 0x3B, 0x81, 0xC0, 0x1C, 0xE0, 0x78, 0x0F, 0x38, 0x0E, 0x03,
0x8E, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xE0, 0xE0, 0x38, 0x70, 0x38, 0x0E, 0x1C, 0x0E, 0x03, 0x8E, 0x03, 0x81, 0xC7,
0x00, 0xE3, 0xF1, 0xC0, 0x3F, 0xF8, 0xFF, 0xF7, 0xF8, 0x3F, 0xFC, 0x00, 0x00, 0xCC, 0x7F, 0x80, 0xFC, 0xFF, 0xE0,
0x78, 0xE3, 0xF0, 0x30, 0xE0, 0x70, 0x00, 0xE0, 0x79, 0xFE, 0xE0, 0x39, 0xFE, 0xE0, 0x38, 0x0E, 0xE0, 0x38, 0x1C,
0xE0, 0x38, 0x38, 0xE0, 0x38, 0x70, 0xE0, 0x38, 0xE0, 0xE0, 0x71, 0xE0, 0xE3, 0xF1, 0xC0, 0xFF, 0xE3, 0xFF, 0x7F,
0x83, 0xFF, 0x01, 0xC6, 0x60, 0x0E, 0x3F, 0x00, 0x70, 0xF0, 0x03, 0x83, 0x00, 0x1C, 0x00, 0x1F, 0xE7, 0xFD, 0xFF,
0x3F, 0xFE, 0x78, 0x0E, 0xE1, 0xC0, 0xE7, 0x0E, 0x0F, 0x38, 0x70, 0xF1, 0xC3, 0x87, 0x0E, 0x1C, 0x70, 0x7C, 0xE7,
0x01, 0xFF, 0x3F, 0xE7, 0xF9, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0,
0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x03, 0x9F, 0xFF,
0xFF, 0xBF, 0xF7, 0xE0, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0,
0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7F, 0xFD, 0xFF, 0xF7, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0x80,
0x3E, 0xE3, 0xF1, 0xF8, 0x1C, 0x0E, 0x07, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x3F, 0x9D, 0xEE, 0xE7,
0x03, 0x83, 0xC7, 0xC3, 0xC0, 0xE0, 0x38, 0x07, 0xF0, 0x38, 0x07, 0xF8, 0x38, 0x07, 0xFC, 0x38, 0x07, 0xFC, 0x38,
0x07, 0xEE, 0x38, 0x07, 0xE7, 0x38, 0x07, 0xE3, 0xB8, 0x07, 0xE3, 0xB8, 0x07, 0xE1, 0xF8, 0x07, 0xE0, 0xF8, 0x06,
0xE0, 0xF8, 0x0E, 0xE0, 0x79, 0x9E, 0xE0, 0x7B, 0xFE, 0xE0, 0x39, 0xFC, 0x00, 0x00, 0xDC, 0x07, 0x1B, 0xC0, 0xE0,
0x7C, 0x1C, 0x0F, 0xC3, 0x81, 0xF8, 0x71, 0xBB, 0x8E, 0x37, 0x39, 0xC6, 0xE3, 0xB8, 0xDC, 0x77, 0x1B, 0x87, 0xE3,
0x70, 0x7C, 0x6E, 0x0F, 0x8D, 0xC0, 0xF1, 0xB8, 0x1E, 0x37, 0x01, 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x1F,
0x00, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0E, 0xFF, 0x8E, 0xE3, 0xCE,
0xE1, 0xCE, 0xE1, 0xCE, 0xE1, 0xCE, 0xE1, 0xCE, 0xE1, 0xCE, 0xE1, 0xCE, 0xE1, 0xCE, 0xE1, 0xCE, 0x00, 0x0E, 0x00,
0x0E, 0x00, 0x3E, 0x00, 0x7C, 0x0C, 0xC0, 0x3F, 0x00, 0x78, 0x00, 0xC0, 0x00, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0,
0x0F, 0xC0, 0x37, 0x01, 0xCC, 0x07, 0x38, 0x18, 0x60, 0xE1, 0xC3, 0xFF, 0x1F, 0xFC, 0x70, 0x39, 0x80, 0xEE, 0x01,
0xF8, 0x07, 0x11, 0x07, 0xC0, 0xE0, 0x10, 0x00, 0x0F, 0xC3, 0xF8, 0xCF, 0x01, 0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC,
0x77, 0xFC, 0xFF, 0xCF, 0xF7, 0x8C, 0x01, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x66,
0xFC, 0xF0, 0xC0, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x0C, 0xC0, 0x1F, 0x80, 0x1E, 0x00,
0x18, 0x00, 0x00, 0x01, 0xFC, 0x0F, 0xFC, 0x3E, 0x7C, 0x70, 0x3D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE, 0x00, 0xDC,
0x03, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C, 0xF9, 0xF0, 0xFF, 0xC0, 0x7F, 0x00, 0x33, 0x07, 0xE0, 0x78, 0x06, 0x00,
0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8, 0x19, 0x81, 0xF8,
0x0F, 0x00, 0x60, 0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x33, 0x0F, 0xC1, 0xE0, 0x30, 0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1,
0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x1F, 0x81, 0xF8, 0x00, 0x01, 0x9C, 0x19, 0xC0, 0x00, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3,
0xFE, 0x1F, 0xC0, 0x3F, 0x0F, 0xC0, 0x01, 0xCC, 0x73, 0x00, 0x0E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1,
0xF8, 0x77, 0x1D, 0xFF, 0x3F, 0xC0, 0x03, 0x00, 0x30, 0x07, 0x03, 0xEC, 0x38, 0xC0, 0x00, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE, 0x1F, 0xC0,
0x06, 0x01, 0x80, 0xE0, 0x30, 0x73, 0x9C, 0xE0, 0x03, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1D,
0xC7, 0x7F, 0xCF, 0xF0, 0x0F, 0x80, 0xF8, 0x3E, 0xC3, 0x8C, 0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07,
0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0x70, 0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x3F, 0x0F, 0x80, 0xC1,
0xCE, 0x73, 0x80, 0x0E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x77, 0x1D, 0xFF, 0x3F, 0xC0, 0x0C,
0x00, 0xE0, 0x06, 0x03, 0xAC, 0x38, 0xC0, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E,
0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE, 0x1F, 0xC0, 0x18, 0x0E, 0x01, 0xC0, 0x30, 0x73, 0x9C,
0xE0, 0x03, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1D, 0xC7, 0x7F, 0xCF, 0xF0, 0x7E, 0x1F, 0xE4,
0x78, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, 0x87, 0xF7, 0x9F, 0xE3, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0x00, 0x07, 0x30, 0x1C,
0xC0, 0x00, 0x00, 0x70, 0x01, 0xE0, 0x07, 0x80, 0x3F, 0x00, 0xDC, 0x07, 0x30, 0x1C, 0xE0, 0x61, 0x83, 0x87, 0x0F,
0xFC, 0x7F, 0xF1, 0xC0, 0xE6, 0x03, 0xB8, 0x07, 0xE0, 0x1C, 0x3F, 0x8F, 0xE0, 0x00, 0xEE, 0x3B, 0x80, 0x03, 0xF0,
0xFE, 0x33, 0xC0, 0x73, 0xFD, 0xFF, 0x79, 0xD8, 0x77, 0x1D, 0xFF, 0x3F, 0xC0, 0x0F, 0xC0, 0x3F, 0x00, 0x00, 0x00,
0xC0, 0x03, 0x00, 0x00, 0x00, 0x70, 0x01, 0xE0, 0x07, 0x80, 0x3F, 0x00, 0xDC, 0x07, 0x30, 0x1C, 0xE0, 0x61, 0x83,
0x87, 0x0F, 0xFC, 0x7F, 0xF1, 0xC0, 0xE6, 0x03, 0xB8, 0x07, 0xE0, 0x1C, 0x3F, 0x8F, 0xE0, 0x00, 0x38, 0x0E, 0x00,
0x03, 0xF0, 0xFE, 0x33, 0xC0, 0x73, 0xFD, 0xFF, 0x79, 0xD8, 0x77, 0x1D, 0xFF, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x0F,
0xE0, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x0F, 0xFE, 0x03, 0xE0, 0x00, 0xEC, 0x00, 0x1D, 0x80, 0x07, 0x30, 0x00, 0xC7,
0xF8, 0x38, 0xFF, 0x0E, 0x18, 0x01, 0xFF, 0x00, 0x7F, 0xE0, 0x0C, 0x0C, 0x03, 0x81, 0x80, 0x60, 0x3F, 0xFC, 0x07,
0xFC, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF3, 0xE1, 0xFF, 0xF8, 0xCF, 0xDE, 0x03, 0x87, 0x3F,
0xFF, 0xBF, 0xFF, 0xDE, 0x70, 0x0C, 0x38, 0x07, 0x1F, 0x13, 0xFF, 0xF8, 0xFF, 0xFC, 0x0F, 0xE0, 0xFF, 0xC7, 0xCF,
0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x1C, 0xE1, 0xFF, 0x87, 0xFE, 0x07, 0x1C, 0x1C, 0x7C, 0x70, 0xFF,
0xC0, 0xFF, 0x00, 0x3F, 0xC7, 0xFC, 0xF9, 0xCE, 0x1C, 0xE7, 0xEE, 0x7E, 0xE1, 0xCE, 0x1C, 0xF3, 0xC7, 0xFC, 0x3F,
0xC0, 0x1C, 0x67, 0x8F, 0xF8, 0xFF, 0x00, 0x0C, 0xC0, 0xFC, 0x07, 0x80, 0x30, 0x00, 0x00, 0xFE, 0x3F, 0xF7, 0xC7,
0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0x70, 0x77, 0xC7, 0x3F, 0xF0, 0xFF, 0x33,
0x0F, 0xC1, 0xE0, 0x30, 0x00, 0x0F, 0xF7, 0xFF, 0xE7, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xFC, 0xF7, 0xFC, 0xFF,
0x01, 0xD8, 0xEF, 0xFB, 0xFC, 0x19, 0x80, 0xFC, 0x03, 0xC0, 0x0C, 0x00, 0x00, 0x70, 0x7B, 0x83, 0x9C, 0x38, 0xE3,
0x87, 0x38, 0x3B, 0x81, 0xF8, 0x0F, 0xC0, 0x7F, 0x03, 0xBC, 0x1C, 0xF0, 0xE3, 0xC7, 0x0F, 0x38, 0x3D, 0xC0, 0xE0,
0xD8, 0x3E, 0x07, 0x00, 0x00, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0xEE, 0x73, 0xBC, 0xEE, 0x3F, 0x0F, 0x83,
0xF0, 0xEE, 0x39, 0xCE, 0x3B, 0x87, 0x0F, 0xE0, 0x7F, 0xE1, 0xF3, 0xE3, 0x81, 0xEE, 0x01, 0xDC, 0x03, 0xB8, 0x07,
0x70, 0x06, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x73, 0x81, 0xE7, 0xCF, 0x87, 0xFE, 0x03, 0xF8, 0x01, 0xC0, 0x03, 0x80,
0x07, 0x80, 0x3F, 0x0F, 0xF3, 0xEF, 0x70, 0xEE, 0x0F, 0xC1, 0xF8, 0x3F, 0x0E, 0xF3, 0xCF, 0xF0, 0xFC, 0x07, 0x01,
0xC0, 0x1E, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x7F, 0x03, 0xFF, 0x0F, 0x9F, 0x1C, 0x0F, 0x70, 0x0E, 0xE0,
0x1D, 0xC0, 0x3B, 0x80, 0x37, 0x00, 0xEE, 0x01, 0xDC, 0x03, 0x9C, 0x0F, 0x3E, 0x7C, 0x3F, 0xF0, 0x1F, 0xC0, 0x0E,
0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0xFF, 0x3E, 0xF7, 0x0E, 0xE0, 0xFC, 0x1F,
0x83, 0xF0, 0xEF, 0x3C, 0xFF, 0x0F, 0xC0, 0x70, 0x1C, 0x01, 0xE0, 0x19, 0x83, 0xF0, 0x3C, 0x03, 0x00, 0x00, 0xFF,
0xDF, 0xF8, 0x0E, 0x03, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xF8, 0x07, 0x80, 0x38, 0x07, 0x00, 0xEE, 0x7F, 0xFF, 0x3F,
0xC0, 0x33, 0x07, 0xE0, 0x78, 0x06, 0x00, 0x00, 0xFF, 0x9F, 0xF0, 0x1C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xF0,
0x0F, 0x80, 0x70, 0x06, 0x01, 0xCC, 0x79, 0xFE, 0x3F, 0x80, 0x33, 0x3F, 0x1E, 0x0C, 0x00, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xF8, 0xF8, 0x7F, 0x81, 0xFF, 0xBF, 0xF8, 0x7F, 0xEE, 0x3F,
0x00, 0x3B, 0x81, 0xC0, 0x1C, 0xE0, 0x78, 0x0F, 0x38, 0x0E, 0x03, 0x8E, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xE0, 0xE0,
0x38, 0x70, 0x38, 0x0E, 0x1C, 0x0E, 0x03, 0x8E, 0x03, 0x81, 0xC7, 0x00, 0xE3, 0xF1, 0xC0, 0x3F, 0xF8, 0xFF, 0xF7,
0xF8, 0x3F, 0xFC, 0x7F, 0x80, 0x00, 0xFF, 0xE0, 0x00, 0xE3, 0xF0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x79, 0xFE, 0xE0,
0x39, 0xFE, 0xE0, 0x38, 0x0E, 0xE0, 0x38, 0x1C, 0xE0, 0x38, 0x38, 0xE0, 0x38, 0x70, 0xE0, 0x38, 0xE0, 0xE0, 0x71,
0xE0, 0xE3, 0xF1, 0xC0, 0xFF, 0xE3, 0xFF, 0x7F, 0x83, 0xFF, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03,
0x80, 0x00, 0x1C, 0x00, 0x1F, 0xE7, 0xFD, 0xFF, 0x3F, 0xFE, 0x78, 0x0E, 0xE1, 0xC0, 0xE7, 0x0E, 0x0F, 0x38, 0x70,
0xF1, 0xC3, 0x87, 0x0E, 0x1C, 0x70, 0x7C, 0xE7, 0x01, 0xFF, 0x3F, 0xE7, 0xF9, 0xFF, 0x01, 0x80, 0x3C, 0x03, 0x80,
0x30, 0x00, 0x00, 0xFE, 0x3F, 0xF7, 0xC7, 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x07, 0xE0, 0x7E, 0x07,
0x70, 0x77, 0xC7, 0x3F, 0xF0, 0xFF, 0x03, 0x01, 0xC0, 0xE0, 0x30, 0x00, 0x0F, 0xF7, 0xFF, 0xE7, 0xE1, 0xF8, 0x7E,
0x1F, 0x87, 0xE1, 0xFC, 0xF7, 0xFC, 0xFF, 0x01, 0xD8, 0xEF, 0xFB, 0xFC, 0xE0, 0x30, 0x0E, 0x03, 0x00, 0xE0, 0x30,
0x0E, 0x03, 0x00, 0xE0, 0x30, 0x7E, 0x03, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0xE0, 0x30, 0x7E, 0x03, 0x07, 0xE0,
0x30, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0xFE, 0x01, 0xFE, 0xE0, 0x0F, 0xC0, 0x7F, 0x8F, 0xFC, 0xF3, 0xEE, 0x0F, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xEE, 0x0E, 0xE1, 0xCE, 0x78, 0xFF, 0x0F, 0xE0, 0xF8, 0x0E, 0x00, 0xE0, 0x0E,
0x00, 0xE0, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x06, 0x00, 0x00, 0x70, 0x1F, 0xC0, 0xFF, 0x07, 0xFC, 0x3F, 0xE1,
0xFB, 0x8F, 0xCE, 0x7E, 0x3B, 0xF1, 0xDF, 0x87, 0xFC, 0x1F, 0xE0, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0x70, 0x18, 0x07,
0x00, 0xE0, 0x18, 0x00, 0x3F, 0xCF, 0xFB, 0x8F, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x01,
0x80, 0x1E, 0x00, 0x70, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3F, 0x00, 0xDC, 0x07,
0x38, 0x1C, 0xE0, 0x61, 0x83, 0x87, 0x0F, 0xFC, 0x7F, 0xF1, 0xC0, 0xE6, 0x03, 0xB8, 0x07, 0xE0, 0x1C, 0x06, 0x03,
0xC0, 0xC0, 0x38, 0x1B, 0x06, 0xC0, 0xE0, 0x00, 0x3F, 0x0F, 0xE3, 0x3C, 0x07, 0x3F, 0xDF, 0xF7, 0x9D, 0x87, 0x71,
0xDF, 0xF3, 0xFC, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x3F,
0xF8, 0x0F, 0x80, 0x03, 0xB0, 0x00, 0x76, 0x00, 0x1C, 0xC0, 0x03, 0x1F, 0xE0, 0xE3, 0xFC, 0x38, 0x60, 0x07, 0xFC,
0x01, 0xFF, 0x80, 0x30, 0x30, 0x0E, 0x06, 0x01, 0x80, 0xFF, 0xF0, 0x1F, 0xF0, 0x00, 0x60, 0x00, 0x70, 0x00, 0x70,
0x00, 0x30, 0x00, 0x00, 0x01, 0xF9, 0xF0, 0xFF, 0xFC, 0x67, 0xEF, 0x01, 0xC3, 0x9F, 0xFF, 0xDF, 0xFF, 0xEF, 0x38,
0x06, 0x1C, 0x03, 0x8F, 0x89, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x18, 0x00, 0x00, 0x01,
0xFF, 0x8F, 0xFF, 0x3E, 0x7C, 0x70, 0x7D, 0xC1, 0xFB, 0x87, 0x77, 0x0E, 0xEE, 0x38, 0xDC, 0xE1, 0xBB, 0x87, 0x7E,
0x0E, 0x78, 0x3C, 0xF9, 0xF1, 0xFF, 0xC3, 0x7F, 0x00, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x00, 0x00, 0x7F, 0x9F, 0xF7,
0x9E, 0xE3, 0xDC, 0xFF, 0x3B, 0xFE, 0x7F, 0x9C, 0xE7, 0xBF, 0xE7, 0xF8, 0x1B, 0x00, 0x6E, 0x01, 0xDC, 0x03, 0x30,
0x00, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0xC0, 0x37, 0x01, 0xCC, 0x07, 0x38, 0x18, 0x60, 0xE1, 0xC3, 0xFF,
0x1F, 0xFC, 0x70, 0x39, 0x80, 0xEE, 0x01, 0xF8, 0x07, 0x66, 0x1D, 0x83, 0xF0, 0x6C, 0x00, 0x0F, 0xC3, 0xF8, 0xCF,
0x01, 0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x07, 0x80, 0x3F, 0x00, 0xCC, 0x00, 0x00, 0x07, 0x00,
0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x18, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1C, 0x0E,
0x60, 0x3B, 0x80, 0x7E, 0x01, 0xC0, 0x1F, 0x07, 0xC3, 0xB8, 0x00, 0x00, 0x0F, 0xC3, 0xF8, 0xCF, 0x01, 0xCF, 0xF7,
0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x66, 0x0E, 0xE0, 0xEC, 0x0D, 0x80, 0x01, 0xFF, 0xBF, 0xF7, 0x00, 0xE0,
0x1C, 0x03, 0x80, 0x7F, 0xCF, 0xF9, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xF0, 0x6C, 0x1B, 0x87,
0x70, 0xCC, 0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x3E, 0x67, 0xF8, 0xFE, 0x1E, 0x07,
0xE0, 0xEC, 0x00, 0x0F, 0xFD, 0xFF, 0xB8, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFE, 0x7F, 0xCE, 0x01, 0xC0, 0x38, 0x07,
0x00, 0xE0, 0x1F, 0xFF, 0xFF, 0x80, 0x1E, 0x0F, 0xC3, 0x30, 0x00, 0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF,
0xFF, 0x80, 0xE0, 0x3E, 0x67, 0xF8, 0xFE, 0xCC, 0xEE, 0x77, 0x32, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0xCC, 0xEE, 0x76, 0x36, 0x00, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x7B, 0xFC, 0xC0, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7,
0x00, 0x3C, 0xFD, 0xB8, 0x00, 0x07, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x1B, 0x00, 0x3F, 0x00,
0x37, 0x00, 0x66, 0x00, 0x00, 0x01, 0xFC, 0x0F, 0xFC, 0x3E, 0x7C, 0x70, 0x3D, 0xC0, 0x3B, 0x80, 0x77, 0x00, 0xEE,
0x00, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x0E, 0x70, 0x3C, 0xF9, 0xF0, 0xFF, 0xC0, 0x7F, 0x00, 0x6C, 0x0F, 0xC0, 0xDC,
0x19, 0x80, 0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8, 0x07,
0x80, 0x1F, 0x80, 0x3B, 0x00, 0x00, 0x00, 0xFE, 0x07, 0xFE, 0x1F, 0x3E, 0x38, 0x1E, 0xE0, 0x1D, 0xC0, 0x3B, 0x80,
0x77, 0x00, 0x6E, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x38, 0x1E, 0x7C, 0xF8, 0x7F, 0xE0, 0x3F, 0x80, 0x1E, 0x07, 0xE0,
0xEC, 0x00, 0x00, 0x00, 0x7E, 0x1F, 0xE7, 0xDE, 0xE1, 0xDC, 0x1F, 0x83, 0xF0, 0x7E, 0x1D, 0xE7, 0x9F, 0xE1, 0xF8,
0x6C, 0x07, 0xE0, 0x37, 0x03, 0x30, 0x00, 0x07, 0xF8, 0xFF, 0xCE, 0x3E, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x3E, 0xFF,
0xCF, 0xF8, 0xE3, 0x8E, 0x3C, 0xE1, 0xCE, 0x0E, 0xE0, 0xEE, 0x07, 0xCC, 0xEE, 0x77, 0x32, 0x00, 0x3F, 0x7F, 0x71,
0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x1E, 0x03, 0xF0, 0x3B, 0x00, 0x00, 0x7F, 0x8F, 0xFC, 0xE3, 0xEE,
0x0E, 0xE0, 0xEE, 0x0E, 0xE3, 0xEF, 0xFC, 0xFF, 0x8E, 0x38, 0xE3, 0xCE, 0x1C, 0xE0, 0xEE, 0x0E, 0xE0, 0x70, 0x3C,
0xFD, 0xB8, 0x00, 0x0F, 0xFF, 0xF1, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x36, 0x03, 0xF0, 0x1B, 0x81, 0x98,
0x00, 0x0E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0x70,
0x77, 0x9E, 0x3F, 0xE1, 0xFC, 0x6C, 0x1B, 0x87, 0x70, 0xCC, 0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F,
0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x0F, 0x01, 0xF8, 0x1D, 0x80, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x07, 0x79, 0xE3, 0xFE, 0x1F, 0xC0, 0x1E, 0x0F, 0xC3,
0x30, 0x00, 0x00, 0x38, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xDC, 0x77, 0xFC, 0xFF, 0x1F, 0xCF,
0xF9, 0xE7, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3C, 0x03, 0x80, 0x77, 0x3F, 0xFF, 0x9F, 0xE0,
0x00, 0x0E, 0x03, 0xC0, 0x70, 0x00, 0x3F, 0x3F, 0x9C, 0xCE, 0x07, 0xC1, 0xF8, 0x3E, 0x07, 0x47, 0xBF, 0xDF, 0xC0,
0x01, 0xC1, 0xE0, 0xE0, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60,
0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x00, 0x06, 0x01, 0xE0, 0x1E, 0x00, 0xE0, 0xE0, 0xE0, 0xFE, 0xFE,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF2, 0x7E, 0x7E, 0x00, 0x38, 0x78, 0x70, 0xFF, 0x1F, 0xF1, 0x9E, 0x00, 0xE0,
0x1C, 0x03, 0x80, 0xE0, 0x7C, 0x3F, 0x07, 0xF0, 0x3F, 0x00, 0xE0, 0x1C, 0x01, 0x80, 0x70, 0x0E, 0x0F, 0x9F, 0xE3,
0xF8, 0x00, 0xFE, 0x7F, 0x33, 0xC0, 0xE0, 0x70, 0x70, 0xF0, 0x7E, 0x0F, 0x01, 0xC0, 0xE0, 0xE3, 0xF7, 0xF3, 0xE0,
0x19, 0x80, 0xF8, 0x07, 0x00, 0x60, 0x00, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3F, 0xFF, 0xFF,
0xFE, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xD8, 0x3E, 0x07, 0x00, 0x00, 0xE0, 0x38, 0x0E,
0x03, 0x80, 0xE0, 0x3F, 0xCF, 0xFB, 0xCF, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x7B, 0xFC,
0xC0, 0x18, 0x03, 0x80, 0x38, 0x03, 0x00, 0x01, 0xFF, 0xBF, 0xF7, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0xCF, 0xF9,
0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xF0, 0x3B, 0x87, 0x70, 0x00, 0x7F, 0xEF, 0xFD, 0xC0, 0x38,
0x07, 0x00, 0xE0, 0x1F, 0xF3, 0xFE, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xFF, 0xFF, 0xFC, 0xFF, 0xF1, 0xFF,
0xE0, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xFF, 0x03, 0xFF, 0x07, 0x9F, 0x0E, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x70,
0x70, 0xE1, 0xE1, 0xCF, 0x83, 0x9E, 0x00, 0x07, 0x01, 0xC0, 0xE0, 0x30, 0x00, 0x3F, 0xFF, 0xFF, 0x80, 0xE0, 0x38,
0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0x0F, 0xE3, 0xFF, 0x7C, 0x67, 0x00,
0xE0, 0x0E, 0x00, 0xFF, 0x8F, 0xF8, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x7C, 0x63, 0xFF, 0x1F, 0xE0, 0x1F, 0xCF,
0xF9, 0xE7, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3C, 0x03, 0x80, 0x77, 0x3F, 0xFF, 0x9F, 0xE0,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xEE, 0xEE, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
0x38, 0x38, 0x38, 0x38, 0x38, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x7E,
0x7F, 0xF9, 0xF8, 0x0F, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xE1, 0x80, 0x03, 0x86, 0x00, 0x0E, 0x18, 0x00, 0x38, 0x7F,
0x80, 0xE1, 0xFF, 0x03, 0x86, 0x3E, 0x0E, 0x18, 0x38, 0x30, 0x60, 0x61, 0xC1, 0x81, 0x87, 0x06, 0x0E, 0x78, 0x18,
0xFB, 0xE0, 0x7F, 0xCE, 0x01, 0xFE, 0x00, 0x00, 0x00, 0xE0, 0x70, 0x0E, 0x07, 0x00, 0xE0, 0x70, 0x0E, 0x07, 0x00,
0xE0, 0x70, 0x0F, 0xFF, 0xFC, 0xFF, 0xFF, 0xEE, 0x07, 0x1F, 0xE0, 0x70, 0x7E, 0x07, 0x07, 0xE0, 0x70, 0x7E, 0x07,
0x07, 0xE0, 0x71, 0xFE, 0x07, 0xFE, 0xE0, 0x7F, 0x80, 0xFF, 0xF1, 0xFF, 0xE0, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01,
0xFF, 0x03, 0xFF, 0x07, 0x9E, 0x0E, 0x0E, 0x1C, 0x1C, 0x38, 0x38, 0x70, 0x70, 0xE0, 0xE1, 0xC1, 0xC3, 0x83, 0x80,
0x03, 0x00, 0x38, 0x03, 0x80, 0x18, 0x00, 0x00, 0x70, 0x7B, 0x83, 0x9C, 0x38, 0xE3, 0x87, 0x38, 0x3B, 0x81, 0xF8,
0x0F, 0xC0, 0x7F, 0x03, 0xBC, 0x1C, 0xF0, 0xE3, 0xC7, 0x0F, 0x38, 0x3D, 0xC0, 0xE0, 0x0C, 0x00, 0x70, 0x01, 0xC0,
0x06, 0x00, 0x00, 0x70, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0xFF, 0x0F, 0xF8, 0xEF, 0xC7, 0x7E, 0x73, 0xF7, 0x1F, 0xF8,
0xFF, 0x87, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xC0, 0x70, 0x1D, 0xC0, 0xFC, 0x03, 0xE0, 0x00, 0x0E, 0x07, 0x38, 0x39,
0xC1, 0xCE, 0x0C, 0x38, 0xE1, 0xC7, 0x07, 0x30, 0x3F, 0x80, 0xFC, 0x03, 0xC0, 0x1E, 0x00, 0xE0, 0x4F, 0x03, 0xF0,
0x1F, 0x00, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E,
0x07, 0xE0, 0x7F, 0xFF, 0xFF, 0xF0, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0,
0x0D, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x18, 0x38, 0x70, 0xFF, 0xC7, 0xFF, 0x1C, 0x0E, 0x60, 0x3B, 0x80, 0x7E, 0x01,
0xC0, 0xFF, 0xCF, 0xFC, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xF8, 0xFF, 0xCE, 0x3E, 0xE0, 0xEE, 0x06, 0xE0, 0x6E, 0x0E,
0xE3, 0xEF, 0xFC, 0xFF, 0x80, 0x7F, 0x8F, 0xFC, 0xE3, 0xEE, 0x0E, 0xE0, 0xEE, 0x3E, 0xFF, 0xCF, 0xFE, 0xE1, 0xEE,
0x07, 0xE0, 0x7E, 0x07, 0xE1, 0xEF, 0xFE, 0x7F, 0x80, 0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80,
0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x00, 0x0F, 0xF8, 0x1F, 0xF0, 0x38, 0x60, 0x70, 0xC0, 0xE1, 0x81,
0xC3, 0x03, 0x86, 0x07, 0x0C, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xC3, 0x81, 0x9F, 0xFF, 0xFF, 0xFF, 0xF0,
0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x38, 0xFF, 0xDF, 0xFB, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3F, 0xE7, 0xFC, 0xE0,
0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xFF, 0xFF, 0xF8, 0x70, 0xE1, 0xCF, 0x1C, 0x78, 0xE3, 0x8E, 0x0E, 0x73, 0x80,
0xEE, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x07, 0xFC, 0x01, 0xDD, 0xC0, 0x73, 0xBC, 0x1E, 0x73, 0xC3,
0x8E, 0x38, 0xE1, 0xC3, 0xBC, 0x38, 0x78, 0x7F, 0x8F, 0xF9, 0xCF, 0x00, 0x70, 0x0C, 0x07, 0x87, 0xE0, 0xFE, 0x03,
0xE0, 0x1C, 0x03, 0x80, 0x77, 0x3F, 0xFF, 0x9F, 0xE0, 0xE0, 0x3F, 0x03, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xF1, 0xDF,
0x8E, 0xFC, 0xE7, 0xEE, 0x3F, 0xF1, 0xFF, 0x0F, 0xF0, 0x7F, 0x83, 0xF8, 0x1F, 0x80, 0xE0, 0x1D, 0xC0, 0x7E, 0x03,
0xE0, 0x00, 0x0E, 0x03, 0xF0, 0x3F, 0x81, 0xFC, 0x1F, 0xE1, 0xFF, 0x1D, 0xF8, 0xEF, 0xCE, 0x7E, 0xE3, 0xFF, 0x1F,
0xF0, 0xFF, 0x07, 0xF8, 0x3F, 0x81, 0xF8, 0x0E, 0xE0, 0xF7, 0x07, 0x38, 0x71, 0xC7, 0x0E, 0x70, 0x77, 0x03, 0xF0,
0x1F, 0x80, 0xFE, 0x07, 0x78, 0x39, 0xE1, 0xC7, 0x8E, 0x1E, 0x70, 0x7B, 0x81, 0xC0, 0x0F, 0xF8, 0x3F, 0xE0, 0xE1,
0x83, 0x86, 0x0E, 0x18, 0x38, 0x60, 0xE1, 0x83, 0x86, 0x0E, 0x18, 0x30, 0x61, 0xC1, 0x87, 0x06, 0x78, 0x1B, 0xE0,
0x6E, 0x01, 0x80, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x78, 0x1F, 0x6C, 0x3F, 0x6C, 0x37, 0x66, 0x37, 0xE6, 0x67,
0xE7, 0x67, 0xE3, 0xE7, 0xE3, 0xC7, 0xE3, 0xC7, 0xE1, 0xC7, 0xE0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E,
0x03, 0xE0, 0x3E, 0x03, 0xFF, 0xFF, 0xFF, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x30, 0x0F,
0xE0, 0x7F, 0xE1, 0xF3, 0xE3, 0x81, 0xEE, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x06, 0xE0, 0x1D, 0xC0, 0x3B, 0x80,
0x73, 0x81, 0xE7, 0xCF, 0x87, 0xFE, 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x70, 0x7F, 0x8F, 0xFC, 0xE3, 0xEE, 0x0E,
0xE0, 0xEE, 0x0E, 0xE3, 0xEF, 0xFC, 0xFF, 0x8E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x00, 0x0F, 0xE3,
0xFF, 0x7C, 0x67, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x7C, 0x63, 0xFF,
0x0F, 0xE0, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00,
0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x73, 0x83, 0x9C, 0x1C, 0xE0, 0xC3, 0x8E, 0x1C, 0x70, 0x73, 0x03, 0xF8,
0x0F, 0xC0, 0x3C, 0x01, 0xE0, 0x0E, 0x04, 0xF0, 0x3F, 0x01, 0xF0, 0x00, 0x01, 0x80, 0x01, 0x80, 0x1F, 0xF8, 0x3F,
0xFC, 0x7D, 0xBE, 0xF1, 0x8F, 0xE1, 0x87, 0xE1, 0x87, 0xE1, 0x87, 0xE1, 0x87, 0xF1, 0x8F, 0x7D, 0xBE, 0x3F, 0xFC,
0x1F, 0xF8, 0x01, 0x80, 0x01, 0x80, 0x70, 0x7B, 0x83, 0x8E, 0x38, 0x3B, 0xC1, 0xDC, 0x07, 0xC0, 0x1E, 0x00, 0xE0,
0x0F, 0x80, 0x7E, 0x07, 0x70, 0x71, 0xC3, 0x87, 0x38, 0x3B, 0x80, 0xE0, 0xE0, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x1C,
0xE0, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0x73, 0xFF, 0xFF, 0xFF,
0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x8F,
0x7F, 0xE7, 0xFC, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0xE0, 0xE1, 0xF8, 0x38, 0x7E, 0x0E, 0x1F, 0x83, 0x87,
0xE0, 0xE1, 0xF8, 0x38, 0x7E, 0x0E, 0x1F, 0x83, 0x87, 0xE0, 0xE1, 0xF8, 0x38, 0x7E, 0x0E, 0x1F, 0x83, 0x87, 0xE0,
0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xE1, 0xCE, 0x0E, 0x1C, 0xE0, 0xE1, 0xCE, 0x0E, 0x1C, 0xE0, 0xE1, 0xCE,
0x0E, 0x1C, 0xE0, 0xE1, 0xCE, 0x0E, 0x1C, 0xE0, 0xE1, 0xCE, 0x0E, 0x1C, 0xE0, 0xE1, 0xCE, 0x0E, 0x1C, 0xE0, 0xE1,
0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0xFE, 0x01, 0xFC,
0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xFE, 0x03, 0xFF, 0x07, 0x3E, 0x0E, 0x1E, 0x1C, 0x1C, 0x38, 0x38, 0x70,
0xF0, 0xE3, 0xC1, 0xFF, 0x83, 0xFC, 0x00, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xFF, 0x87,
0xFF, 0xC7, 0xE3, 0xE7, 0xE0, 0xE7, 0xE0, 0xE7, 0xE0, 0xE7, 0xE0, 0xE7, 0xE3, 0xE7, 0xFF, 0xC7, 0x7F, 0x87, 0xE0,
0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xF8, 0xFF, 0xCE, 0x3E, 0xE0, 0xEE, 0x06, 0xE0, 0x6E, 0x0E, 0xE3, 0xEF,
0xFC, 0x7F, 0x80, 0x7F, 0x0F, 0xFC, 0x63, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x07, 0x00,
0x70, 0x0E, 0x63, 0xEF, 0xFC, 0x7F, 0x00, 0xE0, 0x7F, 0x0E, 0x0F, 0xF8, 0xE1, 0xF3, 0xCE, 0x3C, 0x0E, 0xE3, 0x80,
0xEE, 0x38, 0x07, 0xFF, 0x80, 0x7F, 0xF8, 0x07, 0xE3, 0x80, 0x7E, 0x38, 0x07, 0xE3, 0x80, 0xEE, 0x1C, 0x0E, 0xE1,
0xF3, 0xCE, 0x0F, 0xFC, 0xE0, 0x7F, 0x00, 0x1F, 0xF3, 0xFF, 0x7C, 0x77, 0x07, 0x70, 0x77, 0x07, 0x7C, 0x73, 0xFF,
0x1F, 0xF1, 0xC7, 0x1C, 0x73, 0x87, 0x38, 0x77, 0x07, 0x70, 0x70, 0x3F, 0x0F, 0xE3, 0x3C, 0x07, 0x3F, 0xDF, 0xF7,
0x9D, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x07, 0xC3, 0xF8, 0xFE, 0x38, 0x06, 0x01, 0xFF, 0x3F, 0xF7, 0x9E, 0xE0, 0xFC,
0x1F, 0x83, 0xF0, 0x7E, 0x1C, 0xF7, 0x9F, 0xE1, 0xF8, 0xFF, 0x3F, 0xEE, 0x3B, 0x8E, 0xFF, 0xBF, 0xEE, 0x3F, 0x87,
0xE3, 0xFF, 0xEF, 0xF0, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x1F, 0xE0, 0xFF, 0x07,
0x38, 0x39, 0xC1, 0xCE, 0x0C, 0x70, 0xE3, 0x87, 0x1C, 0x70, 0xE7, 0xFF, 0xFF, 0xFF, 0xC0, 0x7E, 0x03, 0xF0, 0x1C,
0x3F, 0x1F, 0xEF, 0x3F, 0x87, 0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xF9, 0x9F, 0xE3, 0xF8, 0x71, 0x8E, 0x39, 0x9C, 0x39,
0x9C, 0x1D, 0xB8, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x1D, 0xB8, 0x39, 0x9C, 0x71, 0x8E, 0xE1, 0x87, 0x7F, 0x1F,
0xE6, 0x38, 0x0E, 0x3F, 0x0F, 0xE0, 0x38, 0x07, 0x63, 0xDF, 0xE7, 0xF0, 0xE1, 0xF8, 0xFE, 0x3F, 0x9F, 0xEE, 0xFB,
0x3F, 0xCF, 0xE3, 0xF0, 0xFC, 0x3E, 0x0C, 0x3B, 0x8F, 0xC1, 0xF0, 0x00, 0x00, 0x38, 0x7E, 0x3F, 0x8F, 0xE7, 0xFB,
0xBE, 0xCF, 0xF3, 0xF8, 0xFC, 0x3F, 0x0F, 0x83, 0xE3, 0xF9, 0xEE, 0x73, 0xB8, 0xFC, 0x3E, 0x0F, 0xE3, 0xBC, 0xE7,
0xB8, 0xEE, 0x1C, 0x1F, 0xE3, 0xFC, 0x71, 0x8E, 0x31, 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0x78, 0x7E, 0x0F, 0x81, 0x80,
0x70, 0x3B, 0x83, 0xDE, 0x1E, 0xF1, 0xFF, 0xCF, 0xF6, 0xFF, 0xB6, 0xFC, 0xF3, 0xE7, 0x1F, 0x38, 0xF8, 0x06, 0xE1,
0xF8, 0x7E, 0x1F, 0x87, 0xFF, 0xFF, 0xFE, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1C, 0x3F, 0x0F, 0xF3, 0xEF, 0x70, 0xEE,
0x0F, 0xC1, 0xF8, 0x3F, 0x0E, 0xF3, 0xCF, 0xF0, 0xFC, 0x00, 0xFF, 0xFF, 0xFE, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F,
0x87, 0xE1, 0xF8, 0x7E, 0x1C, 0xFF, 0x1F, 0xF3, 0x8F, 0x70, 0xEE, 0x0F, 0xC1, 0xF8, 0x3F, 0x0E, 0xF3, 0xDF, 0xF3,
0xFC, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0x3F, 0x3F, 0xBE, 0x5C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xF9, 0x3F, 0xCF,
0xE0, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xE0, 0xDC, 0x39, 0xC7,
0x38, 0xC7, 0x18, 0x77, 0x0E, 0xE0, 0xD8, 0x1F, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xC1, 0xF8, 0x3E, 0x00, 0x03, 0x00,
0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x03, 0xFC, 0x1F, 0xFE, 0x3D, 0xBE, 0xE3, 0x1D, 0xC6, 0x1B, 0x0C, 0x37,
0x18, 0x6E, 0x31, 0xCF, 0x6F, 0x9F, 0xFE, 0x0F, 0xF0, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0xE1, 0xCE,
0x70, 0xEE, 0x0F, 0x81, 0xE0, 0x1C, 0x07, 0xC1, 0xF8, 0x73, 0x8E, 0x3B, 0x83, 0x00, 0xE1, 0xDC, 0x3B, 0x87, 0x70,
0xEE, 0x1D, 0xC3, 0xB8, 0x77, 0x0E, 0xE1, 0xDF, 0xFF, 0xFF, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x61, 0xD8, 0x76, 0x1D,
0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0xE3, 0x8F, 0xC7, 0x1F, 0x8E, 0x3F, 0x1C, 0x7E, 0x38,
0xFC, 0x71, 0xF8, 0xE3, 0xF1, 0xC7, 0xE3, 0x8F, 0xFF, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x9C,
0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x73, 0x8E, 0x39, 0xC7, 0x1C, 0xE3, 0x8E, 0x7F, 0xFF, 0xBF, 0xFF, 0xC0, 0x00, 0x60,
0x00, 0x30, 0x00, 0x18, 0xF8, 0x0F, 0x80, 0x18, 0x01, 0xFE, 0x1F, 0xF1, 0xCF, 0x18, 0x71, 0x87, 0x1C, 0xF1, 0xFF,
0x1F, 0xE0, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xFF, 0x1F, 0xFE, 0x7E, 0x39, 0xF8, 0x77, 0xE3, 0x9F, 0xFE,
0x7F, 0xF1, 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0xFC, 0xFF, 0xB8, 0xFE, 0x1F, 0x87, 0xE3, 0xFF, 0xEF, 0xF0, 0x7E, 0x1F,
0xC6, 0x78, 0x06, 0x1F, 0xC7, 0xF0, 0x1C, 0x0E, 0x47, 0xBF, 0xCF, 0xE0, 0xE1, 0xF9, 0xC7, 0xFB, 0x9E, 0x7F, 0x38,
0x7F, 0xE0, 0xFF, 0xC0, 0xF9, 0x83, 0xF3, 0x87, 0xE7, 0x9F, 0xC7, 0xFB, 0x87, 0xE0, 0x1F, 0xCF, 0xF7, 0x9D, 0xC3,
0x78, 0xDF, 0xF3, 0xFC, 0xE3, 0x30, 0xDC, 0x36, 0x0C, 0x18, 0x0F, 0x01, 0xC0, 0x30, 0x00, 0x0F, 0xC7, 0xFB, 0xCF,
0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x3E, 0x67, 0xF8, 0xFE, 0x33, 0x0C, 0xC0, 0x00, 0x00, 0x3F, 0x1F, 0xEF, 0x3F,
0x87, 0xFF, 0xFF, 0xFE, 0x03, 0x80, 0xF9, 0x9F, 0xE3, 0xF8, 0x70, 0x1F, 0xE3, 0xFC, 0x38, 0x07, 0x00, 0xFF, 0x1F,
0xF3, 0xCE, 0x70, 0xEE, 0x1D, 0xC3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x00, 0xE0, 0x1C, 0x0F, 0x01, 0xE0,
0x06, 0x0E, 0x1C, 0x18, 0x00, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x3F, 0xBF, 0xFC,
0x5C, 0x0F, 0xE7, 0xF3, 0x81, 0xC0, 0xF9, 0xBF, 0xCF, 0xE0, 0x3F, 0x3F, 0x9C, 0xCE, 0x07, 0xC1, 0xF8, 0x3E, 0x07,
0x47, 0xBF, 0xDF, 0xC0, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xDC, 0x00, 0x03, 0x87, 0x0E, 0x1C, 0x38, 0x70,
0xE1, 0xC3, 0x87, 0x0E, 0x00, 0x1C, 0x70, 0x00, 0x00, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0xFF,
0xBE, 0x1F, 0xE0, 0x07, 0xF8, 0x01, 0xC6, 0x00, 0x71, 0x80, 0x1C, 0x7F, 0x07, 0x1F, 0xE1, 0x86, 0x3C, 0xE1, 0x87,
0xF8, 0x63, 0xFC, 0x1F, 0xEE, 0x07, 0xF0, 0xE1, 0xC0, 0x70, 0xE0, 0x38, 0x70, 0x1C, 0x38, 0x0F, 0xFF, 0xE7, 0xFF,
0xFB, 0x87, 0x1D, 0xC3, 0x87, 0xE1, 0xC7, 0x70, 0xFF, 0xB8, 0x7F, 0x80, 0x70, 0x1F, 0xE3, 0xFC, 0x38, 0x07, 0x00,
0xFF, 0x1F, 0xF3, 0xCF, 0x70, 0xEE, 0x1D, 0xC3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x06, 0x03, 0xC0, 0xE0,
0x30, 0x00, 0x38, 0xFE, 0x7B, 0x9C, 0xEE, 0x3F, 0x0F, 0x83, 0xF8, 0xEF, 0x39, 0xEE, 0x3B, 0x87, 0x18, 0x07, 0x00,
0xE0, 0x18, 0x00, 0x38, 0x7E, 0x3F, 0x8F, 0xE7, 0xFB, 0xBE, 0xCF, 0xF3, 0xF8, 0xFC, 0x3F, 0x0F, 0x83, 0x3B, 0x87,
0xF0, 0x7C, 0x00, 0x00, 0x01, 0xC1, 0xB8, 0x73, 0x8E, 0x71, 0x8E, 0x30, 0xEE, 0x1D, 0xC1, 0xB0, 0x3E, 0x03, 0x80,
0x70, 0x0E, 0x03, 0x83, 0xF0, 0x7C, 0x00, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xFF,
0xFF, 0xFC, 0x30, 0x0C, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x03, 0xFF, 0x87, 0xFF, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0xFC,
0x07, 0xFE, 0x0E, 0x7C, 0x1C, 0x1C, 0x38, 0x38, 0x70, 0x70, 0xE1, 0xE1, 0xC7, 0x83, 0xFF, 0x07, 0xF8, 0x18, 0x01,
0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xF8, 0xFF, 0x81, 0x80, 0x1F, 0xE1, 0xFF, 0x1C, 0xF1, 0x87, 0x18, 0x71, 0xCF,
0x1F, 0xF1, 0xFE, 0x0F, 0xE0, 0x7F, 0xE1, 0xF3, 0xE3, 0x81, 0xEE, 0x01, 0xDF, 0xC3, 0xBF, 0xE7, 0x79, 0xFE, 0xE1,
0xFD, 0xC0, 0x3B, 0x80, 0x73, 0x81, 0xE7, 0xCF, 0x87, 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x0F, 0xF3, 0xCF, 0x7C, 0xEF,
0xFF, 0xDF, 0xF9, 0xFF, 0x06, 0xFB, 0xCF, 0xF0, 0xFC, 0x00, 0xE0, 0x0F, 0x70, 0x0F, 0x9C, 0x0F, 0xCE, 0x07, 0x07,
0x03, 0x01, 0xC3, 0x80, 0xE1, 0xC0, 0x71, 0xC0, 0x1C, 0xE0, 0x0E, 0x60, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00,
0x3C, 0x00, 0x1C, 0x00, 0xE0, 0xFE, 0x0F, 0x71, 0xC7, 0x18, 0x73, 0x83, 0xB8, 0x3B, 0x01, 0xF0, 0x1F, 0x01, 0xE0,
0x0E, 0x00, 0x1D, 0xC0, 0x1F, 0x80, 0x3E, 0x00, 0x00, 0x0E, 0x03, 0x9C, 0x0F, 0x38, 0x1E, 0x70, 0x7C, 0xE1, 0xF9,
0xC7, 0x73, 0x8E, 0xE7, 0x39, 0xCE, 0xE3, 0x9F, 0xC7, 0x3F, 0x0E, 0x7C, 0x1C, 0xF8, 0x39, 0xE0, 0x7F, 0x80, 0xF8,
0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x3B, 0x83, 0xF0, 0x1F, 0x00, 0x00, 0x00, 0x0E, 0x1C, 0xE3, 0xCE,
0x3C, 0xE7, 0xCE, 0xEC, 0xEC, 0xCF, 0xCC, 0xF8, 0xCF, 0x0C, 0xF0, 0xCE, 0x0F, 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0C,
0x30, 0x01, 0x80, 0x3F, 0x81, 0xFC, 0x03, 0x00, 0x18, 0x00, 0xFF, 0x07, 0xFE, 0x39, 0xF1, 0x83, 0xCC, 0x0E, 0x60,
0x73, 0x07, 0x9C, 0xF8, 0xFF, 0xC7, 0xF8, 0xFE, 0x1F, 0xC1, 0xC0, 0x38, 0x07, 0xF8, 0xFF, 0x9C, 0x7B, 0x87, 0x71,
0xEF, 0xF8, 0xFE, 0x00, 0x7F, 0x8F, 0xFC, 0xE3, 0xEE, 0x0E, 0xE0, 0xEE, 0x6E, 0xE7, 0xEF, 0xFC, 0xFF, 0x8E, 0x18,
0xE1, 0xCE, 0x0C, 0xE0, 0x0E, 0x00, 0xE0, 0x00, 0xFF, 0x1F, 0xF3, 0x8F, 0x70, 0xEE, 0x0F, 0xC1, 0xF9, 0xBF, 0x3E,
0xF7, 0xDF, 0xF3, 0xFE, 0x70, 0xCE, 0x19, 0xC0, 0x38, 0x00, 0x01, 0xC0, 0x70, 0x1F, 0xFF, 0xFF, 0xF8, 0x0E, 0x03,
0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x03, 0x03, 0x03, 0xFF, 0xFF,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x3F, 0xE7, 0xFC, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x3F, 0xC7,
0xF8, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0x7F, 0xBF, 0xDC, 0x0E, 0x07, 0x07, 0xF3, 0xF8,
0xE0, 0x70, 0x38, 0x1C, 0x00, 0xFF, 0xCF, 0xFC, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xFF, 0x8F, 0xFC, 0xF3, 0xEE,
0x0E, 0xE0, 0x6E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xE0, 0x0E, 0x03, 0xE0, 0xFC, 0x0F, 0x80, 0xFF, 0x3F, 0xCE, 0x03,
0x80, 0xFF, 0x3F, 0xEE, 0x3F, 0x87, 0xE1, 0xF8, 0x7E, 0x1C, 0x07, 0x03, 0x83, 0xE0, 0xF0, 0x70, 0xE1, 0xC7, 0x8E,
0x3C, 0x38, 0xE7, 0x81, 0xCE, 0x70, 0x0E, 0xEE, 0x00, 0x7F, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xFC, 0x00,
0xEE, 0xE0, 0x1C, 0xEF, 0x03, 0xCE, 0x78, 0x38, 0xE3, 0xC7, 0x0E, 0x1F, 0xF0, 0xE1, 0xF0, 0x00, 0x07, 0x00, 0x00,
0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x71, 0x8E, 0x1C, 0xCE, 0x0E, 0x67, 0x03, 0xB7, 0x00, 0xFF, 0x00, 0x3F, 0x80,
0x3F, 0xE0, 0x3B, 0xF8, 0x39, 0x9E, 0x38, 0xC7, 0xF8, 0x61, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x7F, 0x8F,
0xF9, 0xCF, 0x00, 0x70, 0x0C, 0x07, 0x87, 0xE0, 0xFE, 0x03, 0xE0, 0x1C, 0x03, 0x80, 0x77, 0x3F, 0xFF, 0x9F, 0xE0,
0x70, 0x07, 0x03, 0xC0, 0x7F, 0x1F, 0xE6, 0x38, 0x0E, 0x3F, 0x0F, 0xE0, 0x38, 0x07, 0x63, 0x9F, 0xE7, 0xF0, 0x30,
0x0E, 0x0F, 0x80, 0xE0, 0xF7, 0x0F, 0x38, 0x71, 0xC7, 0x0E, 0x70, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFE, 0x07, 0x78,
0x39, 0xE1, 0xC7, 0x8E, 0x1E, 0x70, 0x7F, 0x81, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0xE3, 0xDC, 0xF3, 0x9C,
0x77, 0x0F, 0xC1, 0xF0, 0x3F, 0x87, 0x78, 0xE7, 0x9C, 0x7F, 0x87, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x00, 0xE0, 0x3B,
0x81, 0xCE, 0x0F, 0x38, 0x38, 0xED, 0xC3, 0xBE, 0x0E, 0xF8, 0x3F, 0xC0, 0xFF, 0x83, 0xBF, 0x0E, 0xDE, 0x3B, 0x38,
0xE0, 0x73, 0x80, 0xEE, 0x03, 0x80, 0xE0, 0xEE, 0x1C, 0xE1, 0xCE, 0xF8, 0xEF, 0x0F, 0xE0, 0xEF, 0x0E, 0xF8, 0xE1,
0xCE, 0x0E, 0xE0, 0x70, 0x30, 0x38, 0xC1, 0xCF, 0xEE, 0x3F, 0xF0, 0x33, 0x80, 0xDC, 0x03, 0xF0, 0x0F, 0x80, 0x3F,
0x00, 0xCE, 0x03, 0x1C, 0x0C, 0x38, 0x30, 0x70, 0xC1, 0xE3, 0x03, 0x80, 0x70, 0xEF, 0xDC, 0x73, 0x87, 0x70, 0x7E,
0x07, 0xE0, 0x77, 0x07, 0x38, 0x73, 0xC7, 0x1E, 0x70, 0xE0, 0xFE, 0x0E, 0xFE, 0x1C, 0x0E, 0x38, 0x0E, 0x70, 0x0E,
0xE0, 0x0F, 0xC0, 0x0F, 0xC0, 0x0F, 0x80, 0x0F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0E, 0x38, 0x0E, 0x1C, 0x0E, 0x1E,
0x0E, 0x0E, 0xF8, 0x77, 0xC7, 0x06, 0x70, 0x37, 0x01, 0xF0, 0x0F, 0x80, 0x7E, 0x03, 0x38, 0x18, 0xE0, 0xC3, 0x86,
0x1E, 0xE0, 0x33, 0x80, 0xCE, 0x03, 0x38, 0x0C, 0xE0, 0x33, 0x80, 0xCF, 0xFF, 0x3F, 0xFC, 0xE0, 0x33, 0x80, 0xCE,
0x03, 0x38, 0x0C, 0xE0, 0x33, 0x80, 0xFE, 0x03, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0xE1, 0xCE, 0x1C,
0xE1, 0xCE, 0x1C, 0xFF, 0xCF, 0xFC, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1E, 0xE1, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xE0,
0x3F, 0xE0, 0x3F, 0xE0, 0x30, 0xE0, 0x30, 0xE0, 0x30, 0xE0, 0x30, 0xFF, 0xF0, 0xFF, 0xF0, 0xE0, 0x30, 0xE0, 0x30,
0xE0, 0x30, 0xE0, 0x30, 0xE0, 0x30, 0xE0, 0x30, 0xE0, 0x30, 0xE1, 0xFF, 0x0F, 0xF8, 0x71, 0xC3, 0x8F, 0xFC, 0x7F,
0xE3, 0x87, 0x1C, 0x38, 0xE1, 0xC7, 0x0E, 0x38, 0x70, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xE0, 0x70, 0x0E, 0x07, 0x00,
0xE0, 0x70, 0x0E, 0x07, 0x00, 0xE0, 0x7F, 0x8E, 0x07, 0xFE, 0xE0, 0x79, 0xEE, 0x07, 0x07, 0xE0, 0x70, 0x7E, 0x07,
0x07, 0xE0, 0x70, 0x7E, 0x07, 0x07, 0xE0, 0x70, 0x70, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0x80,
0xFF, 0xC0, 0x7F, 0xE0, 0x38, 0x70, 0x1C, 0x38, 0x0E, 0x1F, 0xE7, 0x0F, 0xFB, 0x87, 0x3D, 0xC3, 0x87, 0xE1, 0xC3,
0xF0, 0xE1, 0xF8, 0x70, 0xE0, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x0F, 0xE0, 0x7F, 0xC1, 0xF1, 0x83,
0x80, 0x0E, 0x1F, 0x9C, 0x7F, 0xB8, 0xF7, 0x71, 0x86, 0xE7, 0x0F, 0xCE, 0x1F, 0x9C, 0x33, 0x98, 0xE7, 0xFF, 0xC7,
0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0xF0, 0x3E, 0x0F, 0xC3, 0xE0, 0x73, 0xEC, 0xFF, 0x9D,
0xF3, 0x1F, 0x67, 0xFF, 0xEF, 0xF8, 0xFE, 0x03, 0xC0, 0x3E, 0x03, 0xC0, 0x0F, 0xE3, 0xFF, 0x7C, 0x67, 0x00, 0xE0,
0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x7C, 0x63, 0xFF, 0x1F, 0xE0, 0x70, 0x03, 0x80,
0xF0, 0x3F, 0x3F, 0xBE, 0x5C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xF9, 0x3F, 0xCF, 0xE1, 0x80, 0xE0, 0x70, 0xF8, 0xFF,
0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00,
0x78, 0x07, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30,
0x0C, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x3B, 0x83, 0x9C, 0x38, 0x71, 0xC3, 0x9C, 0x0E, 0xE0, 0x7E,
0x01, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0xDC, 0x39, 0xC7, 0x38,
0xE7, 0x38, 0x77, 0x0E, 0xC1, 0xF8, 0x1F, 0x03, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0xE0, 0x3B, 0x83,
0x9C, 0x18, 0x71, 0xC3, 0x9C, 0x0E, 0xE0, 0x7E, 0x01, 0xF0, 0x0F, 0x01, 0xFF, 0x0F, 0xF8, 0x0E, 0x00, 0x70, 0x03,
0x80, 0x1C, 0x00, 0xE0, 0xDC, 0x39, 0xC7, 0x38, 0xC7, 0x38, 0x77, 0x0E, 0xC0, 0xF8, 0x1E, 0x0F, 0xF1, 0xFE, 0x07,
0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x79, 0xC1, 0xC3, 0x8E, 0x07, 0x78, 0x1F, 0xC0, 0x3E, 0x00, 0x78, 0x01, 0xE0,
0x0F, 0x80, 0x3F, 0x01, 0xDE, 0x0E, 0x38, 0x38, 0x71, 0xC1, 0xFE, 0x03, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01,
0xC0, 0xF1, 0xCE, 0x70, 0xEE, 0x0F, 0x81, 0xE0, 0x1C, 0x07, 0xC1, 0xFC, 0x73, 0x8E, 0x3F, 0x83, 0x80, 0x30, 0x06,
0x00, 0xC0, 0xFF, 0xE7, 0x3F, 0xF9, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38,
0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0xFF, 0xF0, 0xFF, 0xFC, 0x00, 0x07,
0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0xFF, 0x33, 0xFC, 0xC1, 0xC3, 0x07, 0x0C, 0x1C, 0x30, 0x70, 0xC1, 0xC3,
0x07, 0x0C, 0x1C, 0x30, 0x7F, 0xF1, 0xFF, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0xE0, 0xE7, 0x07, 0x38, 0x39, 0xC1,
0xCE, 0x0E, 0x70, 0x73, 0x83, 0x9E, 0x3C, 0x7F, 0xE1, 0xFF, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x7C, 0x03, 0xE0,
0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x61, 0xCC, 0x39, 0x87, 0x30, 0xE7, 0x1C, 0xFF, 0x8F, 0xF0, 0x0E, 0x01, 0xC0,
0x3C, 0x07, 0x80, 0x30, 0x06, 0x00, 0xC0, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xDD, 0xFB, 0xBF, 0xFF, 0x7F,
0xE7, 0xFC, 0x3B, 0x87, 0x70, 0xEE, 0x01, 0xC0, 0x38, 0xE1, 0xF8, 0x7E, 0x1F, 0xB7, 0x7D, 0xDF, 0xF3, 0xFC, 0x37,
0x0D, 0xC0, 0x70, 0x1C, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0xFC, 0xFF, 0xEF, 0x1E, 0xE0, 0xEE, 0x07,
0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x70, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3F, 0xCF, 0xFB, 0xCF, 0xE1,
0xF8, 0x7E, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0x01, 0xFC, 0x01, 0xFF, 0x01, 0xE7, 0xC1, 0xE0, 0xEC, 0xE0,
0x37, 0x70, 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x60, 0x1F,
0xF8, 0x07, 0xF8, 0x07, 0xE0, 0x7F, 0xB3, 0xDF, 0xF8, 0x7F, 0xFF, 0xBF, 0xFC, 0x70, 0x03, 0x80, 0x0F, 0x10, 0x7F,
0x81, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0x01, 0xE7, 0xC1, 0xE0, 0xEC, 0xE0, 0x37, 0x70, 0x1F, 0xFF, 0xFE, 0xFF, 0xFF,
0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x60, 0x1F, 0xF8, 0x07, 0xF8, 0x00, 0xE0, 0x00, 0x70,
0x00, 0x38, 0x00, 0x1C, 0x00, 0x07, 0xE0, 0x7F, 0xB3, 0xDF, 0xF8, 0x7F, 0xFF, 0xBF, 0xFC, 0x70, 0x03, 0x80, 0x0F,
0x10, 0x7F, 0x80, 0xFC, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x03, 0xB8, 0x00, 0x7F,
0x00, 0x07, 0xC0, 0x00, 0x00, 0x07, 0x0E, 0x1C, 0xF1, 0xC7, 0x8E, 0x38, 0xE0, 0xE7, 0x38, 0x0E, 0xEE, 0x01, 0xFF,
0x80, 0x1F, 0xF0, 0x01, 0xFC, 0x00, 0x7F, 0xC0, 0x1D, 0xDC, 0x07, 0x3B, 0xC1, 0xE7, 0x3C, 0x38, 0xE3, 0x8E, 0x1C,
0x3B, 0xC3, 0x87, 0x80, 0x06, 0x60, 0x07, 0xE0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x8E, 0x39, 0x9C, 0x39,
0x9C, 0x1D, 0xB8, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x1D, 0xB8, 0x39, 0x9C, 0x71, 0x8E, 0xE1, 0x87, 0xE0, 0xEE,
0x1E, 0xE1, 0xCE, 0x38, 0xE7, 0x0E, 0xE0, 0xFC, 0x0F, 0xF8, 0xFF, 0xCE, 0x3E, 0xE0, 0xEE, 0x07, 0xE0, 0x7E, 0x07,
0xE0, 0x70, 0x0E, 0x01, 0xE0, 0xFC, 0x0F, 0x80, 0xE3, 0xF8, 0xEE, 0x73, 0xB8, 0xFC, 0x3F, 0xCF, 0xFB, 0x9F, 0xE1,
0xF8, 0x7E, 0x1C, 0x07, 0x03, 0xC3, 0xE0, 0xF0, 0x0F, 0xF8, 0x1F, 0xF0, 0x38, 0x60, 0x70, 0xC0, 0xE1, 0x81, 0xC3,
0x03, 0x86, 0x07, 0x0C, 0x0E, 0x18, 0x18, 0x30, 0x70, 0x60, 0xE0, 0xC7, 0x81, 0x9F, 0x03, 0xF8, 0x07, 0x80, 0x07,
0x00, 0x0E, 0x00, 0x38, 0x00, 0x60, 0x1F, 0xE0, 0xFF, 0x07, 0x18, 0x38, 0xC1, 0xC6, 0x0E, 0x30, 0x61, 0x87, 0x0C,
0x78, 0x67, 0x83, 0x38, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0,
0x3E, 0x03, 0xFF, 0xFF, 0xFF, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x30, 0x03, 0x00, 0x70,
0x1F, 0x01, 0xE0, 0xE1, 0xF8, 0x7E, 0x1F, 0x87, 0xFF, 0xFF, 0xFE, 0x1F, 0x87, 0xE1, 0xF8, 0x7E, 0x1C, 0x07, 0x01,
0xC1, 0xF0, 0x78, 0xE0, 0x33, 0x80, 0xCE, 0x03, 0x38, 0x0C, 0xE0, 0x33, 0x80, 0xCF, 0xFF, 0x3F, 0xFC, 0xE0, 0x33,
0x80, 0xCE, 0x03, 0x38, 0x0C, 0xE0, 0x33, 0x80, 0xFE, 0x03, 0xC0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0xE1,
0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xFF, 0xCF, 0xFC, 0xE1, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE1, 0xF0, 0x07, 0x00, 0x60,
0x0E, 0x00, 0xC0, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0xCF, 0x7F, 0xE7, 0xFC, 0x03, 0x80,
0x70, 0x0E, 0x07, 0xC0, 0xF8, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x61, 0xD8, 0x76, 0x1D, 0x87, 0x71, 0xDF, 0xF3,
0xFC, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0C, 0x03, 0x00, 0xC0, 0x70, 0x0E, 0x1C, 0x03, 0x87, 0x81, 0xE1, 0xE0, 0x7C,
0x6C, 0x3F, 0x1B, 0x0D, 0xC6, 0x63, 0x73, 0x99, 0x9C, 0xE7, 0x67, 0x38, 0xF9, 0xCE, 0x3C, 0x73, 0x8F, 0x1C, 0xE1,
0xC7, 0x38, 0x01, 0xFE, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0xE0, 0x00, 0x30, 0x70, 0x38, 0xE0, 0xF1,
0xE1, 0xE3, 0xC7, 0xCF, 0xCF, 0x9D, 0xBF, 0x3B, 0x6E, 0x73, 0xCC, 0xE7, 0x19, 0xCE, 0x33, 0x80, 0x78, 0x00, 0x70,
0x00, 0xE0, 0x03, 0x80, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0C, 0xC0, 0x3F, 0x00, 0x78, 0x00, 0x00,
0x07, 0x00, 0x1E, 0x00, 0x78, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x01, 0xCE, 0x06, 0x18, 0x38, 0x70, 0xFF, 0xC7, 0xFF,
0x1C, 0x0E, 0x60, 0x3B, 0x80, 0x7E, 0x01, 0xC0, 0x3B, 0x8F, 0xE1, 0xF0, 0x00, 0x00, 0x0F, 0xC3, 0xF8, 0xCF, 0x01,
0xCF, 0xF7, 0xFD, 0xE7, 0x61, 0xDC, 0x77, 0xFC, 0xFF, 0x0C, 0xC0, 0x33, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x80, 0x1E,
0x00, 0xFC, 0x03, 0x70, 0x1C, 0xC0, 0x73, 0x81, 0x86, 0x0E, 0x1C, 0x3F, 0xF1, 0xFF, 0xC7, 0x03, 0x98, 0x0E, 0xE0,
0x1F, 0x80, 0x70, 0x3B, 0x8E, 0xE0, 0x00, 0x00, 0x3F, 0x0F, 0xE3, 0x3C, 0x07, 0x3F, 0xDF, 0xF7, 0x9D, 0x87, 0x71,
0xDF, 0xF3, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x07, 0xC0, 0x01, 0xD8, 0x00, 0x3B, 0x00, 0x0E, 0x60, 0x01, 0x8F,
0xF0, 0x71, 0xFE, 0x1C, 0x30, 0x03, 0xFE, 0x00, 0xFF, 0xC0, 0x18, 0x18, 0x07, 0x03, 0x00, 0xC0, 0x7F, 0xF8, 0x0F,
0xF8, 0x3F, 0x3E, 0x1F, 0xFF, 0x8C, 0xFD, 0xE0, 0x38, 0x73, 0xFF, 0xFB, 0xFF, 0xFD, 0xE7, 0x00, 0xC3, 0x80, 0x71,
0xF1, 0x3F, 0xFF, 0x8F, 0xFF, 0xC0, 0x33, 0x07, 0xE0, 0x78, 0x00, 0x0F, 0xFD, 0xFF, 0xB8, 0x07, 0x00, 0xE0, 0x1C,
0x03, 0xFE, 0x7F, 0xCE, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0xFF, 0xFF, 0x80, 0x33, 0x0F, 0xC1, 0xE0, 0x00,
0x00, 0x0F, 0xC7, 0xFB, 0xCF, 0xE1, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x3E, 0x67, 0xF8, 0xFE, 0x7F, 0x83, 0xFF, 0x1C,
0x7C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xF8, 0x0F, 0xC0, 0xE7, 0x9F, 0x1F, 0xF0,
0x7E, 0x00, 0x7F, 0x1F, 0xE6, 0x78, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0x87, 0xF3, 0x9F, 0xE3, 0xF0, 0x1D, 0xC0, 0xEE,
0x00, 0x00, 0xFF, 0x07, 0xFE, 0x38, 0xF8, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFE, 0x03, 0xF0,
0x1F, 0x81, 0xCF, 0x3E, 0x3F, 0xE0, 0xFC, 0x00, 0x77, 0x1D, 0xC0, 0x00, 0x00, 0x7F, 0x1F, 0xE6, 0x78, 0x07, 0x01,
0xFF, 0xFF, 0xFF, 0x87, 0xF3, 0x9F, 0xE3, 0xF0, 0x03, 0xB8, 0x00, 0x77, 0x00, 0x00, 0x00, 0x38, 0x70, 0xE7, 0x8E,
0x3C, 0x71, 0xC7, 0x07, 0x39, 0xC0, 0x77, 0x70, 0x0F, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xE0, 0x03, 0xFE, 0x00, 0xEE,
0xE0, 0x39, 0xDE, 0x0F, 0x39, 0xE1, 0xC7, 0x1C, 0x70, 0xE1, 0xDE, 0x1C, 0x3C, 0x06, 0x60, 0x06, 0x60, 0x00, 0x00,
0x00, 0x00, 0x71, 0x8E, 0x39, 0x9C, 0x39, 0x9C, 0x1D, 0xB8, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x1D, 0xB8, 0x39,
0x9C, 0x71, 0x8E, 0xE1, 0x87, 0x3B, 0x87, 0x70, 0x00, 0x3F, 0xC7, 0xFC, 0xE7, 0x80, 0x38, 0x06, 0x03, 0xC3, 0xF0,
0x7F, 0x01, 0xF0, 0x0E, 0x01, 0xC0, 0x3B, 0x9F, 0xFF, 0xCF, 0xF0, 0x77, 0x1D, 0xC0, 0x00, 0x00, 0x7F, 0x1F, 0xE6,
0x38, 0x0E, 0x3F, 0x0F, 0xE0, 0x38, 0x07, 0x63, 0xDF, 0xE7, 0xF0, 0x7F, 0xEF, 0xFC, 0x07, 0x01, 0xE0, 0x38, 0x0E,
0x03, 0x80, 0xFC, 0x03, 0xC0, 0x1C, 0x03, 0x80, 0x77, 0x3F, 0xFF, 0x9F, 0xE0, 0x7F, 0xCF, 0xF8, 0x0E, 0x01, 0xC0,
0x70, 0x1C, 0x03, 0x80, 0xF8, 0x07, 0xC0, 0x38, 0x03, 0x00, 0xE6, 0x3C, 0xFF, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00,
0x01, 0xC0, 0x7E, 0x07, 0xF0, 0x3F, 0x83, 0xFC, 0x3F, 0xE3, 0xBF, 0x1D, 0xF9, 0xCF, 0xDC, 0x7F, 0xE3, 0xFE, 0x1F,
0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x01, 0xC0, 0x3F, 0x8F, 0xE0, 0x00, 0x00, 0xE1, 0xF8, 0xFE, 0x3F, 0x9F, 0xEE, 0xFB,
0x3F, 0xCF, 0xE3, 0xF0, 0xFC, 0x3E, 0x0C, 0x1D, 0xC0, 0xEE, 0x00, 0x01, 0xC0, 0x7E, 0x07, 0xF0, 0x3F, 0x83, 0xFC,
0x3F, 0xE3, 0xBF, 0x1D, 0xF9, 0xCF, 0xDC, 0x7F, 0xE3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x01, 0xC0, 0x3B,
0x8E, 0xE0, 0x00, 0x00, 0xE1, 0xF8, 0xFE, 0x3F, 0x9F, 0xEE, 0xFB, 0x3F, 0xCF, 0xE3, 0xF0, 0xFC, 0x3E, 0x0C, 0x0E,
0xE0, 0x1D, 0xC0, 0x00, 0x00, 0x7F, 0x03, 0xFF, 0x0F, 0x9F, 0x1C, 0x0F, 0x70, 0x0E, 0xE0, 0x1D, 0xC0, 0x3B, 0x80,
0x37, 0x00, 0xEE, 0x01, 0xDC, 0x03, 0x9C, 0x0F, 0x3E, 0x7C, 0x3F, 0xF0, 0x1F, 0xC0, 0x3B, 0x87, 0x70, 0x00, 0x00,
0x03, 0xF0, 0xFF, 0x3E, 0xF7, 0x0E, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0xEF, 0x3C, 0xFF, 0x0F, 0xC0, 0x0F, 0xE0, 0x7F,
0xE1, 0xF3, 0xE3, 0x81, 0xEE, 0x01, 0xDC, 0x03, 0xBF, 0xFF, 0x7F, 0xFE, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0x73, 0x81,
0xE7, 0xCF, 0x87, 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x0F, 0xF3, 0xCF, 0x70, 0x6F, 0xFF, 0xFF, 0xF8, 0x3F, 0x0E, 0xF3,
0xCF, 0xF0, 0xFC, 0x00, 0x0E, 0xE0, 0x1D, 0xC0, 0x00, 0x00, 0x7F, 0x03, 0xFF, 0x0F, 0x9F, 0x1C, 0x0F, 0x70, 0x0E,
0xE0, 0x1D, 0xFF, 0xFB, 0xFF, 0xF7, 0x00, 0xEE, 0x01, 0xDC, 0x03, 0x9C, 0x0F, 0x3E, 0x7C, 0x3F, 0xF0, 0x1F, 0xC0,
0x3B, 0x87, 0x70, 0x00, 0x00, 0x03, 0xF0, 0xFF, 0x3C, 0xF7, 0x06, 0xFF, 0xFF, 0xFF, 0x83, 0xF0, 0xEF, 0x3C, 0xFF,
0x0F, 0xC0, 0x3B, 0x83, 0xB8, 0x00, 0x07, 0xF0, 0xFF, 0xC6, 0x3E, 0x00, 0xE0, 0x07, 0x00, 0x71, 0xFF, 0x1F, 0xF0,
0x07, 0x00, 0x70, 0x07, 0x00, 0xE6, 0x3E, 0xFF, 0xC7, 0xF0, 0x77, 0x1D, 0xC0, 0x00, 0x00, 0x7E, 0x1F, 0xC6, 0x78,
0x06, 0x1F, 0xC7, 0xF0, 0x1C, 0x0E, 0x47, 0xBF, 0xCF, 0xE0, 0x1F, 0xC0, 0xFE, 0x00, 0x01, 0xC0, 0xE7, 0x07, 0x38,
0x39, 0xC1, 0x87, 0x1C, 0x38, 0xE0, 0xE6, 0x07, 0xF0, 0x1F, 0x80, 0x78, 0x03, 0xC0, 0x1C, 0x09, 0xE0, 0x7E, 0x03,
0xE0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x00, 0x0E, 0x0D, 0xC3, 0x9C, 0x73, 0x8C, 0x71, 0x87, 0x70, 0xEE, 0x0D, 0x81,
0xF0, 0x1C, 0x03, 0x80, 0x70, 0x1C, 0x1F, 0x83, 0xE0, 0x00, 0x1D, 0xC0, 0xEE, 0x00, 0x01, 0xC0, 0xE7, 0x07, 0x38,
0x39, 0xC1, 0x87, 0x1C, 0x38, 0xE0, 0xE6, 0x07, 0xF0, 0x1F, 0x80, 0x78, 0x03, 0xC0, 0x1C, 0x09, 0xE0, 0x7E, 0x03,
0xE0, 0x00, 0x3B, 0x87, 0x70, 0x00, 0x00, 0x0E, 0x0D, 0xC3, 0x9C, 0x73, 0x8C, 0x71, 0x87, 0x70, 0xEE, 0x0D, 0x81,
0xF0, 0x1C, 0x03, 0x80, 0x70, 0x1C, 0x1F, 0x83, 0xE0, 0x00, 0x06, 0x60, 0x37, 0x03, 0xF0, 0x1B, 0x0E, 0x07, 0x38,
0x39, 0xC1, 0xCE, 0x0C, 0x38, 0xE1, 0xC7, 0x07, 0x30, 0x3F, 0x80, 0xFC, 0x03, 0xC0, 0x1E, 0x00, 0xE0, 0x4F, 0x03,
0xF0, 0x1F, 0x00, 0x0C, 0xC1, 0xB8, 0x7E, 0x0D, 0x80, 0x01, 0xC1, 0xB8, 0x73, 0x8E, 0x71, 0x8E, 0x30, 0xEE, 0x1D,
0xC1, 0xB0, 0x3E, 0x03, 0x80, 0x70, 0x0E, 0x03, 0x83, 0xF0, 0x7C, 0x00, 0x3B, 0x87, 0x70, 0x00, 0x70, 0x7E, 0x0F,
0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0xC7, 0xBF, 0xF3, 0xFE, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x3B,
0x8E, 0xE0, 0x00, 0x00, 0x61, 0xD8, 0x76, 0x1D, 0x87, 0x71, 0xDF, 0xF3, 0xFC, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0xFF,
0xFF, 0xFE, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x3E, 0x0F, 0x80, 0xE0,
0x38, 0x0E, 0x03, 0x80, 0xFF, 0xFF, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x30, 0x30, 0x30, 0x06,
0x60, 0x06, 0x60, 0x00, 0x00, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xFF, 0x87, 0xFF, 0xC7,
0xE3, 0xE7, 0xE0, 0xE7, 0xE0, 0xE7, 0xE0, 0xE7, 0xE0, 0xE7, 0xE3, 0xE7, 0xFF, 0xC7, 0x7F, 0x87, 0x0C, 0xC0, 0x33,
0x00, 0x00, 0x00, 0x00, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xFF, 0x1F, 0xFE, 0x7E, 0x39, 0xF8, 0x77, 0xE3,
0x9F, 0xFE, 0x7F, 0xF1, 0xC0, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x06, 0x00, 0x00, 0x70, 0x1D, 0xC1, 0xCE, 0x1C, 0x38,
0xE1, 0xCE, 0x07, 0x70, 0x3F, 0x00, 0xF8, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00,
0x18, 0x03, 0x80, 0x38, 0x03, 0x00, 0x00, 0x00, 0x38, 0x37, 0x0E, 0x71, 0xCE, 0x31, 0xC6, 0x1D, 0xC3, 0xB8, 0x36,
0x07, 0xC0, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x7E, 0x0F, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0,
0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x66, 0xEE, 0xE0, 0x77, 0x76, 0xE0, 0x77, 0x76, 0xE0, 0x66, 0x6E, 0xEE, 0xEE,
0xEE, 0x77, 0x77, 0x77, 0x66, 0xEE, 0x77, 0x77, 0x77, 0x66, 0xEE, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x3F, 0xFF,
0xFC, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x0C, 0x03, 0x00, 0xC0,
0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x30, 0x0C, 0x03, 0x0F, 0xFF, 0xFF, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00,
0x7B, 0xFF, 0xFF, 0x78, 0xE1, 0xC3, 0xF0, 0xE1, 0xF8, 0x70, 0xE0, 0x7C, 0x38, 0x00, 0xEE, 0x38, 0x00, 0xC6, 0x70,
0x00, 0xC6, 0x70, 0x00, 0xC6, 0xE0, 0x00, 0xEE, 0xC0, 0x00, 0x7D, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0xBE, 0x3E,
0x03, 0x77, 0x77, 0x07, 0x63, 0x63, 0x0E, 0x63, 0x63, 0x0E, 0x63, 0x63, 0x1C, 0x77, 0x77, 0x1C, 0x3E, 0x3E, 0x18,
0xE3, 0x9C, 0xE1, 0xC3, 0x8E, 0x18, 0x61, 0xC3, 0x0E, 0x1C, 0xE3, 0x1C, 0x60, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0,
0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x00, 0x7C, 0xDF, 0x9F, 0x3E,
0x7C, 0xDB, 0xBE, 0x0C, 0x1C, 0x3C, 0x7C, 0x6C, 0xFE, 0x0C, 0x0C, 0x7E, 0xC1, 0x83, 0xE1, 0xE0, 0xD3, 0xBE, 0x1E,
0x71, 0x83, 0xEE, 0xEC, 0xDB, 0x9E, 0xFE, 0x1C, 0x70, 0xC1, 0x87, 0x0C, 0x18, 0x7C, 0xDD, 0x9B, 0xE7, 0xFC, 0xFB,
0xBE, 0x7C, 0xDF, 0x9F, 0x37, 0xE1, 0xCF, 0x3C, 0x7C, 0xDF, 0x9F, 0x3E, 0x7C, 0xDB, 0xBE, 0x3F, 0xF3, 0x33, 0x33,
0x7C, 0xD8, 0x38, 0xE3, 0xCF, 0x18, 0x3F, 0x7C, 0xD8, 0x31, 0xE0, 0xE0, 0xD3, 0xFE, 0x0C, 0x1C, 0x3C, 0x7C, 0x6C,
0xFE, 0x0C, 0x0C, 0x7E, 0xC1, 0x83, 0xE1, 0xE0, 0xD3, 0xBE, 0x1E, 0x71, 0x83, 0xEE, 0xEC, 0xDB, 0x9E, 0xFE, 0x1C,
0x70, 0xC1, 0x87, 0x0C, 0x18, 0x7C, 0xDD, 0x9B, 0xE7, 0xFC, 0xFB, 0xBE, 0x7C, 0xDF, 0x9F, 0x37, 0xE1, 0xCF, 0x3C,
0x07, 0xE0, 0xFE, 0x1E, 0x21, 0xC0, 0x7F, 0xC7, 0xFC, 0x38, 0x07, 0xF8, 0x7F, 0x81, 0x80, 0x1C, 0x01, 0xF2, 0x0F,
0xF0, 0x7F, 0xFF, 0xEF, 0xFE, 0x06, 0x00, 0x60, 0x07, 0xC0, 0x7C, 0x1F, 0x83, 0xE0, 0x37, 0xC0, 0x7C, 0x1F, 0x83,
0xE0, 0x36, 0x00, 0x60, 0x06, 0x00, 0x3F, 0x83, 0xFC, 0x33, 0xC0, 0x0C, 0x00, 0xCF, 0xFE, 0x07, 0x81, 0xE0, 0xFF,
0xE7, 0x00, 0x70, 0x07, 0x00, 0x3C, 0xC3, 0xFE, 0x1F, 0xC0, 0xFF, 0xFF, 0xFC, 0x1C, 0x01, 0xCF, 0xFD, 0xFF, 0x80,
0xE0, 0x78, 0xFF, 0x1F, 0x83, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x3F, 0x03, 0xFC, 0x33, 0xC0, 0x0E, 0x00,
0xE1, 0xFE, 0x3F, 0xE7, 0x9F, 0x70, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x60, 0xE7, 0xBC, 0x3F, 0x81, 0xF0, 0x07, 0x00,
0x1E, 0x00, 0xF8, 0x03, 0xF0, 0x0D, 0xC0, 0x73, 0x81, 0x8E, 0x0E, 0x18, 0x38, 0x70, 0xC1, 0xC7, 0x03, 0x1C, 0x0E,
0x60, 0x3B, 0xFF, 0xEF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0,
0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x70, 0xFF, 0xFF, 0xFD, 0xC0, 0x38, 0x03,
0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x01, 0xC0, 0x70, 0x1E, 0x03, 0x80, 0xE0, 0x38, 0x07, 0xFF, 0xFF, 0xE0, 0xFF,
0xFF, 0xF0, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x07,
0x00, 0xE0, 0x38, 0x00, 0xFF, 0x80, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18,
0x70, 0xC7, 0xCE, 0x3E, 0x60, 0x3B, 0x01, 0xF8, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x06, 0x00, 0x7D, 0xE7, 0xFF, 0xE7,
0x3E, 0x73, 0x7F, 0xF7, 0xDE, 0x0F, 0x1F, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x38, 0x38, 0x78, 0xF8, 0xF0, 0x3C, 0x6F, 0xFD, 0xBF, 0xB1, 0xE3, 0xC6, 0xFF, 0xDB, 0xFB, 0x1E, 0x03, 0x00,
0xC0, 0x73, 0xFF, 0xFF, 0xC3, 0x80, 0xC0, 0x70, 0xFF, 0xFF, 0xF3, 0x01, 0xC0, 0x60, 0x00, 0x01, 0xC3, 0xF7, 0xFB,
0xF0, 0xF0, 0x3F, 0x07, 0xF8, 0x3F, 0x01, 0xC0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0x07, 0xF8, 0x3F, 0x03, 0xC3, 0xF7,
0xFB, 0xF0, 0xE0, 0x00, 0x0F, 0xFF, 0xFF, 0x3F, 0x3F, 0x7E, 0x7F, 0x72, 0x72, 0xE0, 0x60, 0xE0, 0x60, 0xFE, 0xFE,
0xFE, 0xFE, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0x3E, 0xE7, 0xEE, 0x70, 0x0E, 0x00, 0xE0, 0x0F, 0xEE, 0xFE, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E,
0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0x3E, 0x63, 0xF7, 0x1C, 0x39, 0xC1, 0xCE, 0x0E, 0x7F, 0x73, 0xFB, 0x9C, 0x1C,
0xE0, 0xE7, 0x07, 0x38, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x3B, 0x81, 0xFC, 0x0F, 0x3F, 0x3E, 0x67, 0xE7, 0xE6, 0x72,
0x72, 0x0E, 0x06, 0x00, 0xE0, 0x60, 0x0F, 0xEF, 0xE6, 0xFE, 0xFE, 0x6E, 0x0E, 0x06, 0xE0, 0xE0, 0x6E, 0x0E, 0x06,
0xE0, 0xE0, 0x6E, 0x0E, 0x06, 0xE0, 0xE0, 0x6E, 0x0E, 0x06, 0xE0, 0xE0, 0x6E, 0x0E, 0x06, 0x3F, 0x3E, 0x63, 0xF3,
0xF3, 0x1C, 0x9C, 0x99, 0xC0, 0xC0, 0xCE, 0x06, 0x06, 0x7F, 0x7F, 0x33, 0xFB, 0xF9, 0x9C, 0x1C, 0x0C, 0xE0, 0xE0,
0x67, 0x07, 0x03, 0x38, 0x38, 0x19, 0xC1, 0xC0, 0xCE, 0x0E, 0x06, 0x70, 0x70, 0x3B, 0x83, 0x81, 0xFC, 0x1C, 0x07,
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};
static const EpdGlyph ubuntu_10_regularGlyphs[] = {
{0, 0, 0, 0, 0, 0, 0}, // U+0000
{0, 0, 0, 0, 0, 0, 0}, // U+0008
{0, 0, 77, 0, 0, 0, 0}, // U+0009
{0, 0, 77, 0, 0, 0, 0}, // U+000D
{0, 0, 0, 0, 0, 0, 0}, // U+001D
{0, 0, 77, 0, 0, 0, 0}, // U+0020
{4, 15, 92, 1, 15, 8, 0}, // !
{7, 5, 139, 1, 16, 5, 8}, // "
{12, 15, 222, 1, 15, 23, 13}, // #
{10, 19, 188, 1, 16, 24, 36}, // $
{16, 15, 286, 1, 15, 30, 60}, // %
{14, 15, 222, 0, 15, 27, 90}, // &
{3, 5, 80, 1, 16, 2, 117}, // '
{6, 20, 108, 1, 16, 15, 119}, // (
{6, 20, 108, 0, 16, 15, 134}, // )
{10, 8, 160, 0, 15, 10, 149}, // *
{10, 10, 188, 1, 11, 13, 159}, // +
{4, 5, 82, 0, 2, 3, 172}, // ,
{6, 2, 100, 0, 7, 2, 175}, // -
{3, 3, 82, 1, 3, 2, 177}, // .
{10, 20, 128, -1, 16, 25, 179}, // /
{10, 15, 188, 1, 15, 19, 204}, // 0
{7, 15, 188, 1, 15, 14, 223}, // 1
{10, 15, 188, 1, 15, 19, 237}, // 2
{10, 15, 188, 1, 15, 19, 256}, // 3
{11, 15, 188, 0, 15, 21, 275}, // 4
{10, 15, 188, 1, 15, 19, 296}, // 5
{10, 15, 188, 1, 15, 19, 315}, // 6
{10, 15, 188, 1, 15, 19, 334}, // 7
{10, 15, 188, 1, 15, 19, 353}, // 8
{10, 15, 188, 1, 15, 19, 372}, // 9
{3, 11, 82, 1, 11, 5, 391}, // :
{4, 14, 82, 0, 11, 7, 396}, // ;
{10, 9, 188, 1, 11, 12, 403}, // <
{10, 7, 188, 1, 10, 9, 415}, // =
{10, 9, 188, 1, 11, 12, 424}, // >
{8, 15, 135, 0, 15, 15, 436}, // ?
{18, 20, 317, 1, 16, 45, 451}, // @
{14, 15, 221, 0, 15, 27, 496}, // A
{12, 15, 214, 1, 15, 23, 523}, // B
{12, 15, 207, 1, 15, 23, 546}, // C
{13, 15, 238, 1, 15, 25, 569}, // D
{11, 15, 190, 1, 15, 21, 594}, // E
{10, 15, 179, 1, 15, 19, 615}, // F
{12, 15, 224, 1, 15, 23, 634}, // G
{12, 15, 235, 1, 15, 23, 657}, // H
{3, 15, 90, 1, 15, 6, 680}, // I
{9, 15, 167, 0, 15, 17, 686}, // J
{13, 15, 210, 1, 15, 25, 703}, // K
{10, 15, 173, 1, 15, 19, 728}, // L
{16, 15, 290, 1, 15, 30, 747}, // M
{13, 15, 243, 1, 15, 25, 777}, // N
{15, 15, 259, 1, 15, 29, 802}, // O
{12, 15, 203, 1, 15, 23, 831}, // P
{15, 19, 259, 1, 15, 36, 854}, // Q
{12, 15, 210, 1, 15, 23, 890}, // R
{11, 15, 177, 0, 15, 21, 913}, // S
{12, 15, 188, 0, 15, 23, 934}, // T
{12, 15, 229, 1, 15, 23, 957}, // U
{14, 15, 219, 0, 15, 27, 980}, // V
{19, 15, 310, 0, 15, 36, 1007}, // W
{13, 15, 210, 0, 15, 25, 1043}, // X
{13, 15, 199, 0, 15, 25, 1068}, // Y
{12, 15, 191, 0, 15, 23, 1093}, // Z
{5, 20, 110, 2, 16, 13, 1116}, // [
{10, 20, 128, -1, 16, 25, 1129}, // <backslash>
{5, 20, 110, 0, 16, 13, 1154}, // ]
{11, 8, 188, 0, 15, 11, 1167}, // ^
{12, 2, 164, -1, -2, 3, 1178}, // _
{5, 4, 125, 1, 16, 3, 1181}, // `
{10, 11, 174, 0, 11, 14, 1184}, // a
{11, 16, 196, 1, 16, 22, 1198}, // b
{9, 11, 155, 1, 11, 13, 1220}, // c
{10, 16, 196, 1, 16, 20, 1233}, // d
{10, 11, 186, 1, 11, 14, 1253}, // e
{8, 16, 129, 1, 16, 16, 1267}, // f
{10, 15, 193, 1, 11, 19, 1283}, // g
{10, 16, 190, 1, 16, 20, 1302}, // h
{3, 16, 84, 1, 16, 6, 1322}, // i
{6, 20, 84, -2, 16, 15, 1328}, // j
{10, 16, 174, 1, 16, 20, 1343}, // k
{5, 16, 91, 1, 16, 10, 1363}, // l
{16, 11, 287, 1, 11, 22, 1373}, // m
{10, 11, 191, 1, 11, 14, 1395}, // n
{11, 11, 197, 1, 11, 16, 1409}, // o
{11, 15, 196, 1, 11, 21, 1425}, // p
{10, 15, 196, 1, 11, 19, 1446}, // q
{7, 11, 129, 1, 11, 10, 1465}, // r
{9, 11, 149, 0, 11, 13, 1475}, // s
{8, 14, 134, 1, 14, 14, 1488}, // t
{10, 11, 191, 1, 11, 14, 1502}, // u
{11, 11, 167, 0, 11, 16, 1516}, // v
{16, 11, 259, 0, 11, 22, 1532}, // w
{11, 11, 170, 0, 11, 16, 1554}, // x
{11, 15, 166, 0, 11, 21, 1570}, // y
{10, 11, 157, 0, 11, 14, 1591}, // z
{7, 20, 111, 0, 16, 18, 1605}, // {
{2, 20, 93, 2, 16, 5, 1623}, // |
{7, 20, 111, 0, 16, 18, 1628}, // }
{11, 4, 188, 0, 8, 6, 1646}, // ~
{0, 0, 77, 0, 0, 0, 1652}, // U+00A0
{4, 15, 92, 1, 11, 8, 1652}, // U+00A1
{10, 17, 188, 1, 14, 22, 1660}, // U+00A2
{10, 15, 188, 1, 15, 19, 1682}, // U+00A3
{11, 10, 188, 0, 12, 14, 1701}, // U+00A4
{12, 15, 188, 0, 15, 23, 1715}, // U+00A5
{2, 20, 93, 2, 16, 5, 1738}, // U+00A6
{10, 18, 164, 0, 16, 23, 1743}, // U+00A7
{8, 2, 125, 0, 15, 2, 1766}, // U+00A8
{15, 15, 271, 1, 15, 29, 1768}, // U+00A9
{8, 8, 130, 0, 15, 8, 1797}, // U+00AA
{10, 9, 166, 0, 10, 12, 1805}, // U+00AB
{10, 8, 188, 1, 9, 10, 1817}, // U+00AC
{6, 2, 100, 0, 7, 2, 1827}, // U+00AD
{15, 15, 271, 1, 15, 29, 1829}, // U+00AE
{7, 2, 125, 0, 15, 2, 1858}, // U+00AF
{7, 6, 111, 0, 16, 6, 1860}, // U+00B0
{10, 13, 188, 1, 13, 17, 1866}, // U+00B1
{7, 8, 120, 0, 15, 7, 1883}, // U+00B2
{7, 8, 120, 0, 15, 7, 1890}, // U+00B3
{5, 4, 125, 2, 16, 3, 1897}, // U+00B4
{10, 15, 193, 1, 11, 19, 1900}, // U+00B5
{12, 19, 215, 0, 15, 29, 1919}, // U+00B6
{3, 3, 82, 1, 8, 2, 1948}, // U+00B7
{5, 4, 125, 1, 0, 3, 1950}, // U+00B8
{4, 8, 120, 1, 15, 4, 1953}, // U+00B9
{9, 8, 149, 0, 15, 9, 1957}, // U+00BA
{10, 9, 166, 0, 10, 12, 1966}, // U+00BB
{17, 15, 291, 1, 15, 32, 1978}, // U+00BC
{17, 15, 291, 1, 15, 32, 2010}, // U+00BD
{18, 15, 291, 0, 15, 34, 2042}, // U+00BE
{9, 15, 135, 0, 11, 17, 2076}, // U+00BF
{14, 20, 221, 0, 20, 35, 2093}, // U+00C0
{14, 20, 221, 0, 20, 35, 2128}, // U+00C1
{14, 20, 221, 0, 20, 35, 2163}, // U+00C2
{14, 19, 221, 0, 19, 34, 2198}, // U+00C3
{14, 18, 221, 0, 18, 32, 2232}, // U+00C4
{14, 18, 221, 0, 18, 32, 2264}, // U+00C5
{19, 15, 312, 0, 15, 36, 2296}, // U+00C6
{12, 18, 207, 1, 15, 27, 2332}, // U+00C7
{11, 20, 190, 1, 20, 28, 2359}, // U+00C8
{11, 20, 190, 1, 20, 28, 2387}, // U+00C9
{11, 20, 190, 1, 20, 28, 2415}, // U+00CA
{11, 18, 190, 1, 18, 25, 2443}, // U+00CB
{5, 20, 90, 0, 20, 13, 2468}, // U+00CC
{5, 20, 90, 1, 20, 13, 2481}, // U+00CD
{7, 20, 90, -1, 20, 18, 2494}, // U+00CE
{8, 18, 90, -1, 18, 18, 2512}, // U+00CF
{15, 15, 242, 0, 15, 29, 2530}, // U+00D0
{13, 19, 243, 1, 19, 31, 2559}, // U+00D1
{15, 20, 259, 1, 20, 38, 2590}, // U+00D2
{15, 20, 259, 1, 20, 38, 2628}, // U+00D3
{15, 20, 259, 1, 20, 38, 2666}, // U+00D4
{15, 19, 259, 1, 19, 36, 2704}, // U+00D5
{15, 18, 259, 1, 18, 34, 2740}, // U+00D6
{10, 9, 188, 1, 11, 12, 2774}, // U+00D7
{15, 15, 259, 1, 15, 29, 2786}, // U+00D8
{12, 20, 229, 1, 20, 30, 2815}, // U+00D9
{12, 20, 229, 1, 20, 30, 2845}, // U+00DA
{12, 20, 229, 1, 20, 30, 2875}, // U+00DB
{12, 18, 229, 1, 18, 27, 2905}, // U+00DC
{13, 20, 199, 0, 20, 33, 2932}, // U+00DD
{12, 15, 203, 1, 15, 23, 2965}, // U+00DE
{12, 16, 208, 1, 16, 24, 2988}, // U+00DF
{10, 16, 174, 0, 16, 20, 3012}, // U+00E0
{10, 16, 174, 0, 16, 20, 3032}, // U+00E1
{10, 16, 174, 0, 16, 20, 3052}, // U+00E2
{10, 16, 174, 0, 16, 20, 3072}, // U+00E3
{10, 15, 174, 0, 15, 19, 3092}, // U+00E4
{10, 16, 174, 0, 16, 20, 3111}, // U+00E5
{17, 11, 286, 0, 11, 24, 3131}, // U+00E6
{9, 15, 155, 1, 11, 17, 3155}, // U+00E7
{10, 16, 186, 1, 16, 20, 3172}, // U+00E8
{10, 16, 186, 1, 16, 20, 3192}, // U+00E9
{10, 16, 186, 1, 16, 20, 3212}, // U+00EA
{10, 15, 186, 1, 15, 19, 3232}, // U+00EB
{5, 16, 84, 0, 16, 10, 3251}, // U+00EC
{5, 16, 84, 1, 16, 10, 3261}, // U+00ED
{7, 16, 84, -1, 16, 14, 3271}, // U+00EE
{7, 15, 84, -1, 15, 14, 3285}, // U+00EF
{11, 16, 196, 1, 16, 22, 3299}, // U+00F0
{10, 16, 191, 1, 16, 20, 3321}, // U+00F1
{11, 16, 197, 1, 16, 22, 3341}, // U+00F2
{11, 16, 197, 1, 16, 22, 3363}, // U+00F3
{11, 16, 197, 1, 16, 22, 3385}, // U+00F4
{11, 16, 197, 1, 16, 22, 3407}, // U+00F5
{11, 15, 197, 1, 15, 21, 3429}, // U+00F6
{10, 12, 188, 1, 12, 15, 3450}, // U+00F7
{11, 11, 197, 1, 11, 16, 3465}, // U+00F8
{10, 16, 191, 1, 16, 20, 3481}, // U+00F9
{10, 16, 191, 1, 16, 20, 3501}, // U+00FA
{10, 16, 191, 1, 16, 20, 3521}, // U+00FB
{10, 15, 191, 1, 15, 19, 3541}, // U+00FC
{11, 20, 166, 0, 16, 28, 3560}, // U+00FD
{11, 20, 196, 1, 16, 28, 3588}, // U+00FE
{11, 19, 166, 0, 15, 27, 3616}, // U+00FF
{14, 18, 221, 0, 18, 32, 3643}, // U+0100
{10, 15, 174, 0, 15, 19, 3675}, // U+0101
{14, 19, 221, 0, 19, 34, 3694}, // U+0102
{10, 16, 174, 0, 16, 20, 3728}, // U+0103
{14, 19, 221, 0, 15, 34, 3748}, // U+0104
{10, 14, 174, 0, 11, 18, 3782}, // U+0105
{12, 20, 207, 1, 20, 30, 3800}, // U+0106
{9, 16, 155, 1, 16, 18, 3830}, // U+0107
{12, 20, 207, 1, 20, 30, 3848}, // U+0108
{9, 16, 155, 1, 16, 18, 3878}, // U+0109
{12, 19, 207, 1, 19, 29, 3896}, // U+010A
{9, 16, 155, 1, 16, 18, 3925}, // U+010B
{12, 20, 207, 1, 20, 30, 3943}, // U+010C
{9, 16, 155, 1, 16, 18, 3973}, // U+010D
{13, 20, 238, 1, 20, 33, 3991}, // U+010E
{14, 16, 207, 1, 16, 28, 4024}, // U+010F
{15, 15, 242, 0, 15, 29, 4052}, // U+0110
{12, 16, 196, 1, 16, 24, 4081}, // U+0111
{11, 18, 190, 1, 18, 25, 4105}, // U+0112
{10, 15, 186, 1, 15, 19, 4130}, // U+0113
{11, 19, 190, 1, 19, 27, 4149}, // U+0114
{10, 16, 186, 1, 16, 20, 4176}, // U+0115
{11, 19, 190, 1, 19, 27, 4196}, // U+0116
{10, 16, 186, 1, 16, 20, 4223}, // U+0117
{11, 19, 190, 1, 15, 27, 4243}, // U+0118
{10, 14, 186, 1, 11, 18, 4270}, // U+0119
{11, 20, 190, 1, 20, 28, 4288}, // U+011A
{10, 17, 186, 1, 17, 22, 4316}, // U+011B
{12, 20, 224, 1, 20, 30, 4338}, // U+011C
{10, 20, 193, 1, 16, 25, 4368}, // U+011D
{12, 19, 224, 1, 19, 29, 4393}, // U+011E
{10, 20, 193, 1, 16, 25, 4422}, // U+011F
{12, 19, 224, 1, 19, 29, 4447}, // U+0120
{10, 20, 193, 1, 16, 25, 4476}, // U+0121
{12, 19, 224, 1, 15, 29, 4501}, // U+0122
{10, 21, 193, 1, 17, 27, 4530}, // U+0123
{12, 20, 235, 1, 20, 30, 4557}, // U+0124
{10, 20, 190, 1, 20, 25, 4587}, // U+0125
{15, 15, 244, 0, 15, 29, 4612}, // U+0126
{11, 16, 190, 0, 16, 22, 4641}, // U+0127
{8, 19, 90, -1, 19, 19, 4663}, // U+0128
{8, 16, 84, -1, 16, 16, 4682}, // U+0129
{7, 18, 90, -1, 18, 16, 4698}, // U+012A
{7, 15, 84, -1, 15, 14, 4714}, // U+012B
{6, 19, 90, 0, 19, 15, 4728}, // U+012C
{7, 16, 84, -1, 16, 14, 4743}, // U+012D
{5, 19, 90, 0, 15, 12, 4757}, // U+012E
{4, 20, 84, 0, 16, 10, 4769}, // U+012F
{4, 19, 90, 1, 19, 10, 4779}, // U+0130
{3, 11, 84, 1, 11, 5, 4789}, // U+0131
{14, 15, 256, 1, 15, 27, 4794}, // U+0132
{9, 20, 170, 1, 16, 23, 4821}, // U+0133
{11, 20, 167, 0, 20, 28, 4844}, // U+0134
{8, 20, 84, -2, 16, 20, 4872}, // U+0135
{13, 19, 210, 1, 15, 31, 4892}, // U+0136
{10, 20, 174, 1, 16, 25, 4923}, // U+0137
{10, 11, 179, 1, 11, 14, 4948}, // U+0138
{10, 20, 173, 1, 20, 25, 4962}, // U+0139
{5, 20, 91, 1, 20, 13, 4987}, // U+013A
{10, 19, 173, 1, 15, 24, 5000}, // U+013B
{6, 20, 91, 0, 16, 15, 5024}, // U+013C
{10, 15, 173, 1, 15, 19, 5039}, // U+013D
{6, 16, 95, 1, 16, 12, 5058}, // U+013E
{10, 15, 173, 1, 15, 19, 5070}, // U+013F
{7, 16, 123, 1, 16, 14, 5089}, // U+0140
{12, 15, 179, -1, 15, 23, 5103}, // U+0141
{7, 16, 96, 0, 16, 14, 5126}, // U+0142
{13, 20, 243, 1, 20, 33, 5140}, // U+0143
{10, 16, 191, 1, 16, 20, 5173}, // U+0144
{13, 19, 243, 1, 15, 31, 5193}, // U+0145
{10, 15, 191, 1, 11, 19, 5224}, // U+0146
{13, 20, 243, 1, 20, 33, 5243}, // U+0147
{10, 16, 191, 1, 16, 20, 5276}, // U+0148
{11, 16, 191, 0, 16, 22, 5296}, // U+0149
{13, 19, 243, 1, 15, 31, 5318}, // U+014A
{10, 15, 191, 1, 11, 19, 5349}, // U+014B
{15, 18, 259, 1, 18, 34, 5368}, // U+014C
{11, 15, 197, 1, 15, 21, 5402}, // U+014D
{15, 19, 259, 1, 19, 36, 5423}, // U+014E
{11, 16, 197, 1, 16, 22, 5459}, // U+014F
{15, 20, 259, 1, 20, 38, 5481}, // U+0150
{11, 16, 197, 1, 16, 22, 5519}, // U+0151
{20, 15, 331, 1, 15, 38, 5541}, // U+0152
{18, 11, 316, 1, 11, 25, 5579}, // U+0153
{12, 20, 210, 1, 20, 30, 5604}, // U+0154
{7, 16, 129, 1, 16, 14, 5634}, // U+0155
{12, 19, 210, 1, 15, 29, 5648}, // U+0156
{8, 15, 129, 0, 11, 15, 5677}, // U+0157
{12, 20, 210, 1, 20, 30, 5692}, // U+0158
{7, 16, 129, 1, 16, 14, 5722}, // U+0159
{11, 20, 177, 0, 20, 28, 5736}, // U+015A
{9, 16, 149, 0, 16, 18, 5764}, // U+015B
{11, 20, 177, 0, 20, 28, 5782}, // U+015C
{9, 16, 149, 0, 16, 18, 5810}, // U+015D
{11, 18, 177, 0, 15, 25, 5828}, // U+015E
{9, 14, 149, 0, 11, 16, 5853}, // U+015F
{11, 20, 177, 0, 20, 28, 5869}, // U+0160
{9, 16, 149, 0, 16, 18, 5897}, // U+0161
{12, 18, 188, 0, 15, 27, 5915}, // U+0162
{8, 17, 134, 1, 14, 17, 5942}, // U+0163
{12, 20, 188, 0, 20, 30, 5959}, // U+0164
{8, 16, 134, 1, 16, 16, 5989}, // U+0165
{12, 15, 188, 0, 15, 23, 6005}, // U+0166
{8, 14, 134, 1, 14, 14, 6028}, // U+0167
{12, 19, 229, 1, 19, 29, 6042}, // U+0168
{10, 16, 191, 1, 16, 20, 6071}, // U+0169
{12, 18, 229, 1, 18, 27, 6091}, // U+016A
{10, 15, 191, 1, 15, 19, 6118}, // U+016B
{12, 19, 229, 1, 19, 29, 6137}, // U+016C
{10, 16, 191, 1, 16, 20, 6166}, // U+016D
{12, 19, 229, 1, 19, 29, 6186}, // U+016E
{10, 16, 191, 1, 16, 20, 6215}, // U+016F
{12, 20, 229, 1, 20, 30, 6235}, // U+0170
{10, 16, 191, 1, 16, 20, 6265}, // U+0171
{12, 18, 229, 1, 15, 27, 6285}, // U+0172
{10, 14, 191, 1, 11, 18, 6312}, // U+0173
{19, 20, 310, 0, 20, 48, 6330}, // U+0174
{16, 16, 259, 0, 16, 32, 6378}, // U+0175
{13, 20, 199, 0, 20, 33, 6410}, // U+0176
{11, 20, 166, 0, 16, 28, 6443}, // U+0177
{13, 18, 199, 0, 18, 30, 6471}, // U+0178
{12, 20, 191, 0, 20, 30, 6501}, // U+0179
{10, 16, 157, 0, 16, 20, 6531}, // U+017A
{12, 19, 191, 0, 19, 29, 6551}, // U+017B
{10, 16, 157, 0, 16, 20, 6580}, // U+017C
{12, 20, 191, 0, 20, 30, 6600}, // U+017D
{10, 16, 157, 0, 16, 20, 6630}, // U+017E
{8, 16, 91, 1, 16, 16, 6650}, // U+017F
{15, 17, 259, 1, 17, 32, 6666}, // U+01A0
{12, 13, 197, 1, 13, 20, 6698}, // U+01A1
{15, 17, 237, 1, 17, 32, 6718}, // U+01AF
{12, 13, 199, 1, 13, 20, 6750}, // U+01B0
{26, 19, 430, 1, 19, 62, 6770}, // U+01C4
{24, 16, 396, 1, 16, 48, 6832}, // U+01C5
{21, 16, 355, 1, 16, 42, 6880}, // U+01C6
{19, 15, 339, 1, 15, 36, 6922}, // U+01C7
{14, 20, 259, 1, 16, 35, 6958}, // U+01C8
{9, 20, 177, 1, 16, 23, 6993}, // U+01C9
{24, 15, 409, 1, 15, 45, 7016}, // U+01CA
{19, 20, 328, 1, 16, 48, 7061}, // U+01CB
{16, 20, 277, 1, 16, 40, 7109}, // U+01CC
{14, 20, 221, 0, 20, 35, 7149}, // U+01CD
{10, 16, 174, 0, 16, 20, 7184}, // U+01CE
{6, 20, 90, 0, 20, 15, 7204}, // U+01CF
{7, 16, 84, -1, 16, 14, 7219}, // U+01D0
{15, 20, 259, 1, 20, 38, 7233}, // U+01D1
{11, 16, 197, 1, 16, 22, 7271}, // U+01D2
{12, 20, 229, 1, 20, 30, 7293}, // U+01D3
{10, 16, 191, 1, 16, 20, 7323}, // U+01D4
{12, 21, 229, 1, 21, 32, 7343}, // U+01D5
{10, 17, 191, 1, 17, 22, 7375}, // U+01D6
{12, 21, 229, 1, 21, 32, 7397}, // U+01D7
{10, 18, 191, 1, 18, 23, 7429}, // U+01D8
{12, 20, 229, 1, 20, 30, 7452}, // U+01D9
{10, 17, 191, 1, 17, 22, 7482}, // U+01DA
{12, 21, 229, 1, 21, 32, 7504}, // U+01DB
{10, 18, 191, 1, 18, 23, 7536}, // U+01DC
{10, 11, 186, 1, 11, 14, 7559}, // U+01DD
{14, 21, 221, 0, 21, 37, 7573}, // U+01DE
{10, 17, 174, 0, 17, 22, 7610}, // U+01DF
{14, 21, 221, 0, 21, 37, 7632}, // U+01E0
{10, 17, 174, 0, 17, 22, 7669}, // U+01E1
{19, 18, 312, 0, 18, 43, 7691}, // U+01E2
{17, 15, 286, 0, 15, 32, 7734}, // U+01E3
{14, 15, 234, 1, 15, 27, 7766}, // U+01E4
{12, 15, 197, 1, 11, 23, 7793}, // U+01E5
{12, 20, 224, 1, 20, 30, 7816}, // U+01E6
{10, 20, 193, 1, 16, 25, 7846}, // U+01E7
{13, 20, 210, 1, 20, 33, 7871}, // U+01E8
{10, 20, 174, 1, 20, 25, 7904}, // U+01E9
{15, 18, 259, 1, 15, 34, 7929}, // U+01EA
{11, 14, 197, 1, 11, 20, 7963}, // U+01EB
{15, 21, 259, 1, 18, 40, 7983}, // U+01EC
{11, 18, 197, 1, 15, 25, 8023}, // U+01ED
{11, 20, 189, 0, 20, 28, 8048}, // U+01EE
{11, 20, 157, -1, 16, 28, 8076}, // U+01EF
{8, 20, 84, -2, 16, 20, 8104}, // U+01F0
{26, 15, 430, 1, 15, 49, 8124}, // U+01F1
{24, 15, 396, 1, 15, 45, 8173}, // U+01F2
{21, 16, 355, 1, 16, 42, 8218}, // U+01F3
{12, 20, 224, 1, 20, 30, 8260}, // U+01F4
{10, 20, 193, 1, 16, 25, 8290}, // U+01F5
{20, 15, 352, 1, 15, 38, 8315}, // U+01F6
{12, 19, 214, 1, 15, 29, 8353}, // U+01F7
{13, 20, 243, 1, 20, 33, 8382}, // U+01F8
{10, 16, 191, 1, 16, 20, 8415}, // U+01F9
{14, 21, 221, 0, 21, 37, 8435}, // U+01FA
{10, 19, 174, 0, 19, 24, 8472}, // U+01FB
{19, 20, 312, 0, 20, 48, 8496}, // U+01FC
{17, 16, 286, 0, 16, 34, 8544}, // U+01FD
{15, 20, 259, 1, 20, 38, 8578}, // U+01FE
{11, 16, 197, 1, 16, 22, 8616}, // U+01FF
{14, 20, 221, 0, 20, 35, 8638}, // U+0200
{10, 16, 174, 0, 16, 20, 8673}, // U+0201
{14, 19, 221, 0, 19, 34, 8693}, // U+0202
{10, 16, 174, 0, 16, 20, 8727}, // U+0203
{11, 20, 190, 1, 20, 28, 8747}, // U+0204
{10, 16, 186, 1, 16, 20, 8775}, // U+0205
{11, 19, 190, 1, 19, 27, 8795}, // U+0206
{10, 16, 186, 1, 16, 20, 8822}, // U+0207
{8, 20, 90, -2, 20, 20, 8842}, // U+0208
{8, 16, 84, -2, 16, 16, 8862}, // U+0209
{6, 19, 90, 0, 19, 15, 8878}, // U+020A
{7, 16, 84, -1, 16, 14, 8893}, // U+020B
{15, 20, 259, 1, 20, 38, 8907}, // U+020C
{11, 16, 197, 1, 16, 22, 8945}, // U+020D
{15, 19, 259, 1, 19, 36, 8967}, // U+020E
{11, 16, 197, 1, 16, 22, 9003}, // U+020F
{12, 20, 210, 1, 20, 30, 9025}, // U+0210
{8, 16, 129, 0, 16, 16, 9055}, // U+0211
{12, 19, 210, 1, 19, 29, 9071}, // U+0212
{7, 16, 129, 1, 16, 14, 9100}, // U+0213
{12, 20, 229, 1, 20, 30, 9114}, // U+0214
{10, 16, 191, 1, 16, 20, 9144}, // U+0215
{12, 19, 229, 1, 19, 29, 9164}, // U+0216
{10, 16, 191, 1, 16, 20, 9193}, // U+0217
{11, 19, 177, 0, 15, 27, 9213}, // U+0218
{9, 15, 149, 0, 11, 17, 9240}, // U+0219
{12, 19, 188, 0, 15, 29, 9257}, // U+021A
{8, 18, 134, 1, 14, 18, 9286}, // U+021B
{11, 19, 178, 0, 15, 27, 9304}, // U+021C
{9, 15, 145, 0, 11, 17, 9331}, // U+021D
{12, 20, 235, 1, 20, 30, 9348}, // U+021E
{10, 20, 190, 1, 20, 25, 9378}, // U+021F
{6, 3, 125, 1, 16, 3, 9403}, // U+0311
{11, 20, 190, 1, 20, 28, 9406}, // U+0400
{11, 18, 190, 1, 18, 25, 9434}, // U+0401
{15, 15, 250, 0, 15, 29, 9459}, // U+0402
{10, 20, 170, 1, 20, 25, 9488}, // U+0403
{12, 15, 207, 1, 15, 23, 9513}, // U+0404
{11, 15, 177, 0, 15, 21, 9536}, // U+0405
{3, 15, 90, 1, 15, 6, 9557}, // U+0406
{8, 18, 90, -1, 18, 18, 9563}, // U+0407
{9, 15, 167, 0, 15, 17, 9581}, // U+0408
{22, 16, 348, 0, 15, 44, 9598}, // U+0409
{20, 15, 342, 1, 15, 38, 9642}, // U+040A
{15, 15, 250, 0, 15, 29, 9680}, // U+040B
{13, 20, 210, 1, 20, 33, 9709}, // U+040C
{13, 20, 243, 1, 20, 33, 9742}, // U+040D
{13, 19, 196, 0, 19, 31, 9775}, // U+040E
{12, 19, 233, 1, 15, 29, 9806}, // U+040F
{14, 15, 221, 0, 15, 27, 9835}, // U+0410
{12, 15, 206, 1, 15, 23, 9862}, // U+0411
{12, 15, 214, 1, 15, 23, 9885}, // U+0412
{10, 15, 170, 1, 15, 19, 9908}, // U+0413
{15, 19, 241, 0, 15, 36, 9927}, // U+0414
{11, 15, 190, 1, 15, 21, 9963}, // U+0415
{19, 15, 302, 0, 15, 36, 9984}, // U+0416
{11, 15, 191, 0, 15, 21, 10020}, // U+0417
{13, 15, 243, 1, 15, 25, 10041}, // U+0418
{13, 19, 243, 1, 19, 31, 10066}, // U+0419
{13, 15, 210, 1, 15, 25, 10097}, // U+041A
{14, 15, 236, 0, 15, 27, 10122}, // U+041B
{16, 15, 290, 1, 15, 30, 10149}, // U+041C
{12, 15, 235, 1, 15, 23, 10179}, // U+041D
{15, 15, 259, 1, 15, 29, 10202}, // U+041E
{12, 15, 233, 1, 15, 23, 10231}, // U+041F
{12, 15, 203, 1, 15, 23, 10254}, // U+0420
{12, 15, 207, 1, 15, 23, 10277}, // U+0421
{12, 15, 188, 0, 15, 23, 10300}, // U+0422
{13, 15, 196, 0, 15, 25, 10323}, // U+0423
{16, 16, 288, 1, 16, 32, 10348}, // U+0424
{13, 15, 210, 0, 15, 25, 10380}, // U+0425
{14, 19, 239, 1, 15, 34, 10405}, // U+0426
{11, 15, 210, 1, 15, 21, 10439}, // U+0427
{18, 15, 328, 1, 15, 34, 10460}, // U+0428
{20, 19, 334, 1, 15, 48, 10494}, // U+0429
{15, 15, 242, 0, 15, 29, 10542}, // U+042A
{16, 15, 285, 1, 15, 30, 10571}, // U+042B
{12, 15, 205, 1, 15, 23, 10601}, // U+042C
{12, 15, 207, 0, 15, 23, 10624}, // U+042D
{20, 15, 343, 1, 15, 38, 10647}, // U+042E
{12, 15, 212, 0, 15, 23, 10685}, // U+042F
{10, 11, 174, 0, 11, 14, 10708}, // U+0430
{11, 16, 198, 1, 16, 22, 10722}, // U+0431
{10, 11, 183, 1, 11, 14, 10744}, // U+0432
{8, 11, 139, 1, 11, 11, 10758}, // U+0433
{13, 14, 201, 0, 11, 23, 10769}, // U+0434
{10, 11, 186, 1, 11, 14, 10792}, // U+0435
{16, 11, 254, 0, 11, 22, 10806}, // U+0436
{10, 11, 163, 0, 11, 14, 10828}, // U+0437
{10, 11, 199, 1, 11, 14, 10842}, // U+0438
{10, 16, 199, 1, 16, 20, 10856}, // U+0439
{10, 11, 179, 1, 11, 14, 10876}, // U+043A
{11, 11, 199, 0, 11, 16, 10890}, // U+043B
{13, 11, 244, 1, 11, 18, 10906}, // U+043C
{10, 11, 195, 1, 11, 14, 10924}, // U+043D
{11, 11, 197, 1, 11, 16, 10938}, // U+043E
{10, 11, 193, 1, 11, 14, 10954}, // U+043F
{11, 15, 196, 1, 11, 21, 10968}, // U+0440
{9, 11, 155, 1, 11, 13, 10989}, // U+0441
{10, 11, 154, 0, 11, 14, 11002}, // U+0442
{11, 15, 166, 0, 11, 21, 11016}, // U+0443
{15, 20, 255, 1, 16, 38, 11037}, // U+0444
{11, 11, 170, 0, 11, 16, 11075}, // U+0445
{11, 14, 195, 1, 11, 20, 11091}, // U+0446
{10, 11, 178, 0, 11, 14, 11111}, // U+0447
{15, 11, 274, 1, 11, 21, 11125}, // U+0448
{17, 14, 278, 1, 11, 30, 11146}, // U+0449
{12, 11, 199, 0, 11, 17, 11176}, // U+044A
{14, 11, 253, 1, 11, 20, 11193}, // U+044B
{10, 11, 176, 1, 11, 14, 11213}, // U+044C
{10, 11, 166, 0, 11, 14, 11227}, // U+044D
{15, 11, 270, 1, 11, 21, 11241}, // U+044E
{10, 11, 183, 0, 11, 14, 11262}, // U+044F
{10, 16, 186, 1, 16, 20, 11276}, // U+0450
{10, 15, 186, 1, 15, 19, 11296}, // U+0451
{11, 20, 190, 0, 16, 28, 11315}, // U+0452
{8, 16, 139, 1, 16, 16, 11343}, // U+0453
{9, 11, 166, 1, 11, 13, 11359}, // U+0454
{9, 11, 149, 0, 11, 13, 11372}, // U+0455
{3, 16, 84, 1, 16, 6, 11385}, // U+0456
{7, 15, 84, -1, 15, 14, 11391}, // U+0457
{6, 20, 84, -2, 16, 15, 11405}, // U+0458
{18, 11, 288, 0, 11, 25, 11420}, // U+0459
{17, 11, 284, 1, 11, 24, 11445}, // U+045A
{11, 16, 190, 0, 16, 22, 11469}, // U+045B
{10, 16, 179, 1, 16, 20, 11491}, // U+045C
{10, 16, 199, 1, 16, 20, 11511}, // U+045D
{11, 20, 166, 0, 16, 28, 11531}, // U+045E
{10, 14, 192, 1, 11, 18, 11559}, // U+045F
{15, 16, 242, 0, 16, 30, 11577}, // U+0462
{12, 16, 199, 0, 16, 24, 11607}, // U+0463
{15, 15, 259, 1, 15, 29, 11631}, // U+0472
{11, 11, 197, 1, 11, 16, 11660}, // U+0473
{17, 15, 251, 0, 15, 32, 11676}, // U+0474
{12, 11, 188, 0, 11, 17, 11708}, // U+0475
{15, 23, 248, 1, 19, 44, 11725}, // U+048A
{12, 20, 203, 1, 16, 30, 11769}, // U+048B
{13, 16, 210, 0, 16, 26, 11799}, // U+048C
{11, 11, 175, 0, 11, 16, 11825}, // U+048D
{12, 15, 203, 1, 15, 23, 11841}, // U+048E
{11, 15, 196, 1, 11, 21, 11864}, // U+048F
{10, 18, 170, 1, 18, 23, 11885}, // U+0490
{8, 14, 143, 1, 14, 14, 11908}, // U+0491
{11, 15, 174, 0, 15, 21, 11922}, // U+0492
{9, 11, 142, 0, 11, 13, 11943}, // U+0493
{12, 19, 208, 1, 15, 29, 11956}, // U+0494
{10, 15, 181, 1, 11, 19, 11985}, // U+0495
{20, 19, 307, 0, 15, 48, 12004}, // U+0496
{17, 14, 258, 0, 11, 30, 12052}, // U+0497
{11, 18, 191, 0, 15, 25, 12082}, // U+0498
{10, 14, 163, 0, 11, 18, 12107}, // U+0499
{13, 19, 219, 1, 15, 31, 12125}, // U+049A
{11, 15, 182, 1, 11, 21, 12156}, // U+049B
{14, 15, 236, 1, 15, 27, 12177}, // U+049C
{12, 11, 206, 1, 11, 17, 12204}, // U+049D
{14, 15, 214, 0, 15, 27, 12221}, // U+049E
{12, 11, 185, 0, 11, 17, 12248}, // U+049F
{16, 15, 246, 0, 15, 30, 12265}, // U+04A0
{13, 11, 202, 0, 11, 18, 12295}, // U+04A1
{14, 19, 241, 1, 15, 34, 12313}, // U+04A2
{12, 14, 199, 1, 11, 21, 12347}, // U+04A3
{16, 15, 272, 1, 15, 30, 12368}, // U+04A4
{13, 11, 219, 1, 11, 18, 12398}, // U+04A5
{20, 19, 344, 1, 15, 48, 12416}, // U+04A6
{17, 15, 287, 1, 11, 32, 12464}, // U+04A7
{15, 19, 262, 1, 15, 36, 12496}, // U+04A8
{11, 14, 203, 1, 11, 20, 12532}, // U+04A9
{12, 18, 207, 1, 15, 27, 12552}, // U+04AA
{9, 15, 155, 1, 11, 17, 12579}, // U+04AB
{12, 19, 188, 0, 15, 29, 12596}, // U+04AC
{10, 14, 154, 0, 11, 18, 12625}, // U+04AD
{13, 15, 199, 0, 15, 25, 12643}, // U+04AE
{11, 15, 167, 0, 11, 21, 12668}, // U+04AF
{13, 15, 199, 0, 15, 25, 12689}, // U+04B0
{11, 15, 167, 0, 11, 21, 12714}, // U+04B1
{14, 19, 218, 0, 15, 34, 12735}, // U+04B2
{11, 14, 175, 0, 11, 20, 12769}, // U+04B3
{18, 19, 282, 0, 15, 43, 12789}, // U+04B4
{14, 14, 220, 0, 11, 25, 12832}, // U+04B5
{13, 19, 217, 1, 15, 31, 12857}, // U+04B6
{11, 14, 181, 0, 11, 20, 12888}, // U+04B7
{11, 15, 213, 1, 15, 21, 12908}, // U+04B8
{10, 11, 178, 0, 11, 14, 12929}, // U+04B9
{12, 15, 213, 1, 15, 23, 12943}, // U+04BA
{10, 16, 190, 1, 16, 20, 12966}, // U+04BB
{17, 15, 278, 0, 15, 32, 12986}, // U+04BC
{13, 11, 223, 0, 11, 18, 13018}, // U+04BD
{17, 19, 278, 0, 15, 41, 13036}, // U+04BE
{13, 14, 223, 0, 11, 23, 13077}, // U+04BF
{3, 15, 90, 1, 15, 6, 13100}, // U+04C0
{19, 19, 302, 0, 19, 46, 13106}, // U+04C1
{16, 16, 254, 0, 16, 32, 13152}, // U+04C2
{12, 19, 210, 1, 15, 29, 13184}, // U+04C3
{10, 15, 181, 1, 11, 19, 13213}, // U+04C4
{15, 19, 241, 0, 15, 36, 13232}, // U+04C5
{13, 15, 203, 0, 11, 25, 13268}, // U+04C6
{12, 19, 235, 1, 15, 29, 13293}, // U+04C7
{10, 15, 195, 1, 11, 19, 13322}, // U+04C8
{14, 19, 241, 1, 15, 34, 13341}, // U+04C9
{12, 15, 199, 1, 11, 23, 13375}, // U+04CA
{11, 19, 213, 1, 15, 27, 13398}, // U+04CB
{10, 14, 178, 0, 11, 18, 13425}, // U+04CC
{18, 19, 300, 1, 15, 43, 13443}, // U+04CD
{15, 15, 250, 1, 11, 29, 13486}, // U+04CE
{3, 15, 90, 1, 15, 6, 13515}, // U+04CF
{14, 19, 221, 0, 19, 34, 13521}, // U+04D0
{10, 16, 174, 0, 16, 20, 13555}, // U+04D1
{14, 18, 221, 0, 18, 32, 13575}, // U+04D2
{10, 15, 174, 0, 15, 19, 13607}, // U+04D3
{19, 15, 312, 0, 15, 36, 13626}, // U+04D4
{17, 11, 286, 0, 11, 24, 13662}, // U+04D5
{11, 19, 190, 1, 19, 27, 13686}, // U+04D6
{10, 16, 186, 1, 16, 20, 13713}, // U+04D7
{13, 15, 235, 1, 15, 25, 13733}, // U+04D8
{10, 11, 186, 1, 11, 14, 13758}, // U+04D9
{13, 18, 235, 1, 18, 30, 13772}, // U+04DA
{10, 15, 186, 1, 15, 19, 13802}, // U+04DB
{19, 18, 302, 0, 18, 43, 13821}, // U+04DC
{16, 15, 254, 0, 15, 30, 13864}, // U+04DD
{11, 18, 191, 0, 18, 25, 13894}, // U+04DE
{10, 15, 163, 0, 15, 19, 13919}, // U+04DF
{11, 15, 189, 0, 15, 21, 13938}, // U+04E0
{11, 15, 157, -1, 11, 21, 13959}, // U+04E1
{13, 18, 243, 1, 18, 30, 13980}, // U+04E2
{10, 15, 199, 1, 15, 19, 14010}, // U+04E3
{13, 18, 243, 1, 18, 30, 14029}, // U+04E4
{10, 15, 199, 1, 15, 19, 14059}, // U+04E5
{15, 18, 259, 1, 18, 34, 14078}, // U+04E6
{11, 15, 197, 1, 15, 21, 14112}, // U+04E7
{15, 15, 259, 1, 15, 29, 14133}, // U+04E8
{11, 11, 197, 1, 11, 16, 14162}, // U+04E9
{15, 18, 259, 1, 18, 34, 14178}, // U+04EA
{11, 15, 197, 1, 15, 21, 14212}, // U+04EB
{12, 18, 207, 0, 18, 27, 14233}, // U+04EC
{10, 15, 166, 0, 15, 19, 14260}, // U+04ED
{13, 18, 196, 0, 18, 30, 14279}, // U+04EE
{11, 19, 166, 0, 15, 27, 14309}, // U+04EF
{13, 18, 196, 0, 18, 30, 14336}, // U+04F0
{11, 19, 166, 0, 15, 27, 14366}, // U+04F1
{13, 19, 196, 0, 19, 31, 14393}, // U+04F2
{11, 20, 166, 0, 16, 28, 14424}, // U+04F3
{11, 18, 210, 1, 18, 25, 14452}, // U+04F4
{10, 15, 178, 0, 15, 19, 14477}, // U+04F5
{10, 19, 170, 1, 15, 24, 14496}, // U+04F6
{8, 14, 139, 1, 11, 14, 14520}, // U+04F7
{16, 18, 285, 1, 18, 36, 14534}, // U+04F8
{14, 15, 253, 1, 15, 27, 14570}, // U+04F9
{13, 20, 199, 0, 20, 33, 14597}, // U+1EF2
{11, 21, 166, 0, 17, 29, 14630}, // U+1EF3
{12, 2, 165, -1, 7, 3, 14659}, // U+2013
{22, 2, 332, -1, 7, 6, 14662}, // U+2014
{22, 2, 332, -1, 7, 6, 14668}, // U+2015
{4, 5, 78, 1, 16, 3, 14674}, // U+2018
{4, 5, 78, 0, 16, 3, 14677}, // U+2019
{4, 5, 78, 0, 2, 3, 14680}, // U+201A
{8, 5, 139, 1, 16, 5, 14683}, // U+201C
{8, 5, 139, 0, 16, 5, 14688}, // U+201D
{8, 5, 139, 0, 2, 5, 14693}, // U+201E
{10, 18, 159, 0, 15, 23, 14698}, // U+2020
{10, 18, 159, 0, 15, 23, 14721}, // U+2021
{6, 5, 120, 1, 10, 4, 14744}, // U+2022
{17, 3, 332, 2, 3, 7, 14748}, // U+2026
{24, 15, 409, 1, 15, 45, 14755}, // U+2030
{6, 9, 97, 0, 10, 7, 14800}, // U+2039
{6, 9, 97, 0, 10, 7, 14807}, // U+203A
{11, 15, 49, -4, 15, 21, 14814}, // U+2044
{7, 8, 120, 0, 15, 7, 14835}, // U+2070
{8, 8, 120, 0, 15, 8, 14842}, // U+2074
{7, 8, 120, 0, 15, 7, 14850}, // U+2075
{7, 8, 120, 0, 15, 7, 14857}, // U+2076
{7, 8, 120, 0, 15, 7, 14864}, // U+2077
{7, 8, 120, 0, 15, 7, 14871}, // U+2078
{7, 8, 120, 0, 15, 7, 14878}, // U+2079
{7, 8, 120, 0, 8, 7, 14885}, // U+2080
{4, 8, 120, 1, 8, 4, 14892}, // U+2081
{7, 8, 120, 0, 8, 7, 14896}, // U+2082
{7, 8, 120, 0, 8, 7, 14903}, // U+2083
{8, 8, 120, 0, 8, 8, 14910}, // U+2084
{7, 8, 120, 0, 8, 7, 14918}, // U+2085
{7, 8, 120, 0, 8, 7, 14925}, // U+2086
{7, 8, 120, 0, 8, 7, 14932}, // U+2087
{7, 8, 120, 0, 8, 7, 14939}, // U+2088
{7, 8, 120, 0, 8, 7, 14946}, // U+2089
{12, 14, 188, 0, 14, 21, 14953}, // U+20AC
{12, 15, 188, 0, 15, 23, 14974}, // U+20AE
{12, 15, 188, 0, 15, 23, 14997}, // U+20B4
{11, 15, 188, 1, 15, 21, 15020}, // U+20B9
{12, 16, 195, 0, 16, 24, 15041}, // U+2202
{14, 15, 217, 0, 15, 27, 15065}, // U+2206
{12, 17, 232, 1, 15, 26, 15092}, // U+220F
{11, 17, 172, 0, 15, 24, 15118}, // U+2211
{10, 2, 188, 1, 7, 3, 15142}, // U+2212
{11, 15, 49, -4, 15, 21, 15145}, // U+2215
{3, 3, 82, 1, 8, 2, 15166}, // U+2219
{13, 17, 188, 0, 16, 28, 15168}, // U+221A
{12, 6, 196, 0, 9, 9, 15196}, // U+221E
{8, 20, 123, 0, 16, 20, 15205}, // U+222B
{11, 8, 188, 0, 10, 11, 15225}, // U+2248
{10, 13, 188, 1, 13, 17, 15236}, // U+2260
{10, 12, 188, 1, 12, 15, 15253}, // U+2264
{10, 12, 188, 1, 12, 15, 15268}, // U+2265
{16, 16, 259, 1, 16, 32, 15283}, // U+FB00
{12, 16, 214, 1, 16, 24, 15315}, // U+FB01
{13, 16, 221, 1, 16, 26, 15339}, // U+FB02
{20, 16, 344, 1, 16, 40, 15365}, // U+FB03
{21, 16, 351, 1, 16, 42, 15405}, // U+FB04
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};
static const EpdUnicodeInterval ubuntu_10_regularIntervals[] = {
{0x0, 0x0, 0x0}, {0x8, 0x9, 0x1}, {0xD, 0xD, 0x3}, {0x1D, 0x1D, 0x4},
{0x20, 0x7E, 0x5}, {0xA0, 0xFF, 0x64}, {0x100, 0x17F, 0xC4}, {0x1A0, 0x1A1, 0x144},
{0x1AF, 0x1B0, 0x146}, {0x1C4, 0x21F, 0x148}, {0x311, 0x311, 0x1A4}, {0x400, 0x45F, 0x1A5},
{0x462, 0x463, 0x205}, {0x472, 0x475, 0x207}, {0x48A, 0x4F9, 0x20B}, {0x1EF2, 0x1EF3, 0x27B},
{0x2013, 0x2015, 0x27D}, {0x2018, 0x201A, 0x280}, {0x201C, 0x201E, 0x283}, {0x2020, 0x2022, 0x286},
{0x2026, 0x2026, 0x289}, {0x2030, 0x2030, 0x28A}, {0x2039, 0x203A, 0x28B}, {0x2044, 0x2044, 0x28D},
{0x2070, 0x2070, 0x28E}, {0x2074, 0x2079, 0x28F}, {0x2080, 0x2089, 0x295}, {0x20AC, 0x20AC, 0x29F},
{0x20AE, 0x20AE, 0x2A0}, {0x20B4, 0x20B4, 0x2A1}, {0x20B9, 0x20B9, 0x2A2}, {0x2202, 0x2202, 0x2A3},
{0x2206, 0x2206, 0x2A4}, {0x220F, 0x220F, 0x2A5}, {0x2211, 0x2212, 0x2A6}, {0x2215, 0x2215, 0x2A8},
{0x2219, 0x221A, 0x2A9}, {0x221E, 0x221E, 0x2AB}, {0x222B, 0x222B, 0x2AC}, {0x2248, 0x2248, 0x2AD},
{0x2260, 0x2260, 0x2AE}, {0x2264, 0x2265, 0x2AF}, {0xFB00, 0xFB04, 0x2B1},
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
};
static const EpdKernClassEntry ubuntu_10_regularKernLeftClasses[] = {
{0x0022, 1}, // "
{0x0027, 1}, // '
{0x0028, 2}, // (
{0x0029, 3}, // )
{0x002A, 4}, // *
{0x002C, 5}, // ,
{0x002D, 6}, // -
{0x002E, 5}, // .
{0x002F, 7}, // /
{0x003A, 8}, // :
{0x003B, 8}, // ;
{0x0040, 9}, // @
{0x0041, 10}, // A
{0x0042, 11}, // B
{0x0043, 12}, // C
{0x0044, 13}, // D
{0x0045, 14}, // E
{0x0046, 15}, // F
{0x0047, 16}, // G
{0x004A, 17}, // J
{0x004B, 18}, // K
{0x004C, 19}, // L
{0x004D, 20}, // M
{0x004F, 21}, // O
{0x0050, 22}, // P
{0x0051, 23}, // Q
{0x0052, 24}, // R
{0x0054, 25}, // T
{0x0055, 26}, // U
{0x0056, 27}, // V
{0x0057, 28}, // W
{0x0058, 29}, // X
{0x0059, 30}, // Y
{0x005A, 31}, // Z
{0x005B, 32}, // [
{0x005D, 33}, // ]
{0x0061, 34}, // a
{0x0062, 35}, // b
{0x0063, 36}, // c
{0x0066, 37}, // f
{0x0068, 38}, // h
{0x006A, 39}, // j
{0x006B, 40}, // k
{0x006D, 41}, // m
{0x006E, 41}, // n
{0x006F, 42}, // o
{0x0070, 43}, // p
{0x0071, 44}, // q
{0x0072, 45}, // r
{0x0074, 46}, // t
{0x0076, 47}, // v
{0x0077, 48}, // w
{0x0078, 49}, // x
{0x007A, 50}, // z
{0x007B, 51}, // {
{0x007D, 52}, // }
{0x00A1, 53}, // U+00A1
{0x00AB, 54}, // U+00AB
{0x00BB, 55}, // U+00BB
{0x00BF, 56}, // U+00BF
{0x00C0, 10}, // U+00C0
{0x00C1, 10}, // U+00C1
{0x00C2, 10}, // U+00C2
{0x00C3, 10}, // U+00C3
{0x00C4, 10}, // U+00C4
{0x00C5, 10}, // U+00C5
{0x00C6, 14}, // U+00C6
{0x00C7, 12}, // U+00C7
{0x00C8, 14}, // U+00C8
{0x00C9, 14}, // U+00C9
{0x00CA, 14}, // U+00CA
{0x00CB, 14}, // U+00CB
{0x00D0, 13}, // U+00D0
{0x00D2, 21}, // U+00D2
{0x00D3, 21}, // U+00D3
{0x00D4, 21}, // U+00D4
{0x00D5, 21}, // U+00D5
{0x00D6, 21}, // U+00D6
{0x00D8, 21}, // U+00D8
{0x00D9, 26}, // U+00D9
{0x00DA, 26}, // U+00DA
{0x00DB, 26}, // U+00DB
{0x00DC, 26}, // U+00DC
{0x00DD, 30}, // U+00DD
{0x00DE, 57}, // U+00DE
{0x00DF, 58}, // U+00DF
{0x00E0, 34}, // U+00E0
{0x00E1, 34}, // U+00E1
{0x00E2, 34}, // U+00E2
{0x00E3, 34}, // U+00E3
{0x00E4, 34}, // U+00E4
{0x00E5, 34}, // U+00E5
{0x00E7, 36}, // U+00E7
{0x00F0, 59}, // U+00F0
{0x00F1, 41}, // U+00F1
{0x00F2, 42}, // U+00F2
{0x00F3, 42}, // U+00F3
{0x00F4, 42}, // U+00F4
{0x00F5, 42}, // U+00F5
{0x00F6, 42}, // U+00F6
{0x00F8, 42}, // U+00F8
{0x00FE, 60}, // U+00FE
{0x0100, 10}, // U+0100
{0x0101, 34}, // U+0101
{0x0102, 10}, // U+0102
{0x0103, 34}, // U+0103
{0x0104, 10}, // U+0104
{0x0105, 34}, // U+0105
{0x0106, 12}, // U+0106
{0x0107, 36}, // U+0107
{0x0108, 12}, // U+0108
{0x0109, 36}, // U+0109
{0x010A, 12}, // U+010A
{0x010B, 36}, // U+010B
{0x010C, 12}, // U+010C
{0x010D, 36}, // U+010D
{0x010E, 13}, // U+010E
{0x010F, 61}, // U+010F
{0x0110, 13}, // U+0110
{0x0112, 14}, // U+0112
{0x0114, 14}, // U+0114
{0x0116, 14}, // U+0116
{0x0118, 14}, // U+0118
{0x011A, 14}, // U+011A
{0x011C, 16}, // U+011C
{0x011E, 16}, // U+011E
{0x0120, 16}, // U+0120
{0x0122, 16}, // U+0122
{0x0125, 38}, // U+0125
{0x0127, 38}, // U+0127
{0x0132, 17}, // U+0132
{0x0133, 39}, // U+0133
{0x0134, 17}, // U+0134
{0x0135, 39}, // U+0135
{0x0136, 18}, // U+0136
{0x0137, 40}, // U+0137
{0x0138, 40}, // U+0138
{0x0139, 19}, // U+0139
{0x013B, 19}, // U+013B
{0x013D, 19}, // U+013D
{0x013E, 61}, // U+013E
{0x013F, 19}, // U+013F
{0x0141, 19}, // U+0141
{0x0144, 41}, // U+0144
{0x0146, 41}, // U+0146
{0x0148, 41}, // U+0148
{0x0149, 41}, // U+0149
{0x014A, 62}, // U+014A
{0x014B, 63}, // U+014B
{0x014C, 21}, // U+014C
{0x014D, 42}, // U+014D
{0x014E, 21}, // U+014E
{0x014F, 42}, // U+014F
{0x0150, 21}, // U+0150
{0x0151, 42}, // U+0151
{0x0152, 14}, // U+0152
{0x0154, 24}, // U+0154
{0x0155, 45}, // U+0155
{0x0156, 24}, // U+0156
{0x0157, 45}, // U+0157
{0x0158, 24}, // U+0158
{0x0159, 45}, // U+0159
{0x0162, 25}, // U+0162
{0x0163, 46}, // U+0163
{0x0164, 25}, // U+0164
{0x0165, 46}, // U+0165
{0x0166, 25}, // U+0166
{0x0167, 46}, // U+0167
{0x0168, 26}, // U+0168
{0x016A, 26}, // U+016A
{0x016C, 26}, // U+016C
{0x016E, 26}, // U+016E
{0x0170, 26}, // U+0170
{0x0172, 26}, // U+0172
{0x0174, 28}, // U+0174
{0x0175, 48}, // U+0175
{0x0176, 30}, // U+0176
{0x0178, 30}, // U+0178
{0x0179, 31}, // U+0179
{0x017A, 50}, // U+017A
{0x017B, 31}, // U+017B
{0x017C, 50}, // U+017C
{0x017D, 31}, // U+017D
{0x017E, 50}, // U+017E
{0x017F, 37}, // U+017F
{0x01C4, 31}, // U+01C4
{0x01C5, 50}, // U+01C5
{0x01C6, 50}, // U+01C6
{0x01C7, 17}, // U+01C7
{0x01C8, 39}, // U+01C8
{0x01C9, 39}, // U+01C9
{0x01CA, 17}, // U+01CA
{0x01CB, 39}, // U+01CB
{0x01CC, 39}, // U+01CC
{0x01CD, 10}, // U+01CD
{0x01CE, 34}, // U+01CE
{0x01D1, 21}, // U+01D1
{0x01D2, 42}, // U+01D2
{0x01D3, 26}, // U+01D3
{0x01D5, 26}, // U+01D5
{0x01D7, 26}, // U+01D7
{0x01D9, 26}, // U+01D9
{0x01DB, 26}, // U+01DB
{0x01DD, 42}, // U+01DD
{0x01DE, 10}, // U+01DE
{0x01DF, 34}, // U+01DF
{0x01E0, 10}, // U+01E0
{0x01E1, 34}, // U+01E1
{0x01E2, 14}, // U+01E2
{0x01E4, 16}, // U+01E4
{0x01E6, 16}, // U+01E6
{0x01E8, 18}, // U+01E8
{0x01E9, 40}, // U+01E9
{0x01EA, 21}, // U+01EA
{0x01EB, 42}, // U+01EB
{0x01EC, 21}, // U+01EC
{0x01ED, 42}, // U+01ED
{0x01EE, 64}, // U+01EE
{0x01F0, 39}, // U+01F0
{0x01F1, 31}, // U+01F1
{0x01F2, 50}, // U+01F2
{0x01F3, 50}, // U+01F3
{0x01F4, 16}, // U+01F4
{0x01F7, 65}, // U+01F7
{0x01F9, 41}, // U+01F9
{0x01FA, 10}, // U+01FA
{0x01FB, 34}, // U+01FB
{0x01FC, 14}, // U+01FC
{0x01FE, 21}, // U+01FE
{0x01FF, 42}, // U+01FF
{0x0200, 10}, // U+0200
{0x0201, 34}, // U+0201
{0x0202, 10}, // U+0202
{0x0203, 34}, // U+0203
{0x0204, 14}, // U+0204
{0x0206, 14}, // U+0206
{0x020C, 21}, // U+020C
{0x020D, 42}, // U+020D
{0x020E, 21}, // U+020E
{0x020F, 42}, // U+020F
{0x0210, 24}, // U+0210
{0x0211, 45}, // U+0211
{0x0212, 24}, // U+0212
{0x0213, 45}, // U+0213
{0x0214, 26}, // U+0214
{0x0216, 26}, // U+0216
{0x021A, 25}, // U+021A
{0x021B, 46}, // U+021B
{0x021C, 66}, // U+021C
{0x021F, 38}, // U+021F
{0x0400, 67}, // U+0400
{0x0401, 67}, // U+0401
{0x0402, 68}, // U+0402
{0x0403, 69}, // U+0403
{0x0404, 70}, // U+0404
{0x0405, 71}, // U+0405
{0x040B, 72}, // U+040B
{0x040C, 73}, // U+040C
{0x040E, 74}, // U+040E
{0x0410, 75}, // U+0410
{0x0411, 68}, // U+0411
{0x0412, 76}, // U+0412
{0x0413, 69}, // U+0413
{0x0414, 77}, // U+0414
{0x0415, 67}, // U+0415
{0x0417, 78}, // U+0417
{0x041A, 73}, // U+041A
{0x041C, 79}, // U+041C
{0x041E, 80}, // U+041E
{0x0420, 81}, // U+0420
{0x0421, 70}, // U+0421
{0x0422, 82}, // U+0422
{0x0423, 74}, // U+0423
{0x0424, 83}, // U+0424
{0x0425, 84}, // U+0425
{0x0426, 85}, // U+0426
{0x0429, 85}, // U+0429
{0x042D, 86}, // U+042D
{0x042E, 80}, // U+042E
{0x0430, 87}, // U+0430
{0x0431, 88}, // U+0431
{0x0432, 89}, // U+0432
{0x0433, 90}, // U+0433
{0x0434, 91}, // U+0434
{0x0435, 92}, // U+0435
{0x0436, 93}, // U+0436
{0x0437, 94}, // U+0437
{0x043A, 95}, // U+043A
{0x043E, 96}, // U+043E
{0x0440, 97}, // U+0440
{0x0441, 98}, // U+0441
{0x0442, 99}, // U+0442
{0x0443, 100}, // U+0443
{0x0444, 101}, // U+0444
{0x0445, 102}, // U+0445
{0x0446, 103}, // U+0446
{0x0449, 103}, // U+0449
{0x044A, 104}, // U+044A
{0x044C, 104}, // U+044C
{0x044D, 105}, // U+044D
{0x044E, 106}, // U+044E
{0x0450, 92}, // U+0450
{0x0451, 92}, // U+0451
{0x0452, 107}, // U+0452
{0x0453, 90}, // U+0453
{0x0454, 108}, // U+0454
{0x0455, 109}, // U+0455
{0x0459, 104}, // U+0459
{0x045A, 104}, // U+045A
{0x045B, 110}, // U+045B
{0x045C, 95}, // U+045C
{0x045E, 100}, // U+045E
{0x0462, 68}, // U+0462
{0x0463, 111}, // U+0463
{0x0472, 80}, // U+0472
{0x0473, 96}, // U+0473
{0x0474, 112}, // U+0474
{0x0475, 113}, // U+0475
{0x048A, 85}, // U+048A
{0x048B, 103}, // U+048B
{0x048D, 104}, // U+048D
{0x048F, 97}, // U+048F
{0x0490, 69}, // U+0490
{0x0491, 90}, // U+0491
{0x0492, 69}, // U+0492
{0x0493, 90}, // U+0493
{0x0494, 68}, // U+0494
{0x0495, 114}, // U+0495
{0x0497, 93}, // U+0497
{0x0498, 78}, // U+0498
{0x0499, 94}, // U+0499
{0x049A, 73}, // U+049A
{0x049B, 95}, // U+049B
{0x049C, 73}, // U+049C
{0x049D, 95}, // U+049D
{0x049E, 73}, // U+049E
{0x049F, 95}, // U+049F
{0x04A0, 73}, // U+04A0
{0x04A1, 95}, // U+04A1
{0x04A2, 85}, // U+04A2
{0x04A3, 103}, // U+04A3
{0x04A4, 82}, // U+04A4
{0x04A5, 90}, // U+04A5
{0x04A7, 115}, // U+04A7
{0x04A8, 116}, // U+04A8
{0x04A9, 117}, // U+04A9
{0x04AA, 70}, // U+04AA
{0x04AB, 98}, // U+04AB
{0x04AC, 82}, // U+04AC
{0x04AD, 99}, // U+04AD
{0x04AE, 118}, // U+04AE
{0x04AF, 119}, // U+04AF
{0x04B0, 118}, // U+04B0
{0x04B1, 119}, // U+04B1
{0x04B2, 84}, // U+04B2
{0x04B3, 102}, // U+04B3
{0x04B4, 85}, // U+04B4
{0x04B5, 103}, // U+04B5
{0x04B6, 85}, // U+04B6
{0x04B7, 103}, // U+04B7
{0x04BA, 120}, // U+04BA
{0x04BB, 121}, // U+04BB
{0x04BC, 122}, // U+04BC
{0x04BD, 123}, // U+04BD
{0x04BE, 122}, // U+04BE
{0x04BF, 123}, // U+04BF
{0x04C2, 93}, // U+04C2
{0x04C4, 124}, // U+04C4
{0x04C6, 103}, // U+04C6
{0x04C8, 125}, // U+04C8
{0x04C9, 85}, // U+04C9
{0x04CA, 103}, // U+04CA
{0x04CD, 85}, // U+04CD
{0x04CE, 103}, // U+04CE
{0x04D0, 75}, // U+04D0
{0x04D1, 87}, // U+04D1
{0x04D2, 75}, // U+04D2
{0x04D3, 87}, // U+04D3
{0x04D5, 126}, // U+04D5
{0x04D6, 67}, // U+04D6
{0x04D7, 92}, // U+04D7
{0x04D8, 127}, // U+04D8
{0x04D9, 128}, // U+04D9
{0x04DA, 127}, // U+04DA
{0x04DB, 128}, // U+04DB
{0x04DD, 93}, // U+04DD
{0x04DE, 78}, // U+04DE
{0x04DF, 94}, // U+04DF
{0x04E0, 129}, // U+04E0
{0x04E1, 130}, // U+04E1
{0x04E6, 80}, // U+04E6
{0x04E7, 96}, // U+04E7
{0x04E8, 80}, // U+04E8
{0x04E9, 96}, // U+04E9
{0x04EA, 80}, // U+04EA
{0x04EB, 96}, // U+04EB
{0x04EC, 86}, // U+04EC
{0x04ED, 94}, // U+04ED
{0x04EE, 74}, // U+04EE
{0x04EF, 100}, // U+04EF
{0x04F0, 74}, // U+04F0
{0x04F1, 100}, // U+04F1
{0x04F2, 74}, // U+04F2
{0x04F3, 100}, // U+04F3
{0x04F6, 69}, // U+04F6
{0x04F7, 90}, // U+04F7
{0x1EF2, 30}, // U+1EF2
{0x2013, 6}, // U+2013
{0x2014, 6}, // U+2014
{0x2018, 131}, // U+2018
{0x201A, 132}, // U+201A
{0x201C, 131}, // U+201C
{0x201E, 132}, // U+201E
{0x2026, 5}, // U+2026
{0x2039, 54}, // U+2039
{0x203A, 55}, // U+203A
{0xFB00, 37}, // U+FB00
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
};
static const EpdKernClassEntry ubuntu_10_regularKernRightClasses[] = {
{0x0021, 1}, // !
{0x0022, 2}, // "
{0x0027, 2}, // '
{0x0028, 3}, // (
{0x0029, 4}, // )
{0x002A, 5}, // *
{0x002C, 6}, // ,
{0x002D, 7}, // -
{0x002E, 6}, // .
{0x002F, 8}, // /
{0x003A, 9}, // :
{0x003B, 9}, // ;
{0x003F, 10}, // ?
{0x0040, 11}, // @
{0x0041, 12}, // A
{0x0043, 13}, // C
{0x0047, 14}, // G
{0x004A, 15}, // J
{0x004D, 16}, // M
{0x004F, 17}, // O
{0x0051, 18}, // Q
{0x0053, 19}, // S
{0x0054, 20}, // T
{0x0055, 21}, // U
{0x0056, 22}, // V
{0x0057, 23}, // W
{0x0058, 24}, // X
{0x0059, 25}, // Y
{0x005A, 26}, // Z
{0x005B, 27}, // [
{0x005C, 28}, // <backslash>
{0x005D, 29}, // ]
{0x0061, 30}, // a
{0x0062, 31}, // b
{0x0063, 32}, // c
{0x0064, 33}, // d
{0x0065, 34}, // e
{0x0066, 35}, // f
{0x0067, 36}, // g
{0x0068, 31}, // h
{0x0069, 37}, // i
{0x006A, 38}, // j
{0x006B, 31}, // k
{0x006C, 39}, // l
{0x006D, 40}, // m
{0x006E, 40}, // n
{0x006F, 41}, // o
{0x0070, 40}, // p
{0x0071, 42}, // q
{0x0072, 40}, // r
{0x0073, 43}, // s
{0x0074, 44}, // t
{0x0075, 45}, // u
{0x0076, 46}, // v
{0x0077, 47}, // w
{0x0078, 48}, // x
{0x0079, 49}, // y
{0x007A, 50}, // z
{0x007B, 51}, // {
{0x007D, 52}, // }
{0x00AB, 53}, // U+00AB
{0x00BB, 54}, // U+00BB
{0x00C0, 12}, // U+00C0
{0x00C1, 12}, // U+00C1
{0x00C2, 12}, // U+00C2
{0x00C3, 12}, // U+00C3
{0x00C4, 12}, // U+00C4
{0x00C5, 12}, // U+00C5
{0x00C6, 55}, // U+00C6
{0x00C7, 13}, // U+00C7
{0x00D2, 17}, // U+00D2
{0x00D3, 17}, // U+00D3
{0x00D4, 17}, // U+00D4
{0x00D5, 17}, // U+00D5
{0x00D6, 17}, // U+00D6
{0x00D8, 17}, // U+00D8
{0x00D9, 21}, // U+00D9
{0x00DA, 21}, // U+00DA
{0x00DB, 21}, // U+00DB
{0x00DC, 21}, // U+00DC
{0x00DD, 25}, // U+00DD
{0x00DF, 56}, // U+00DF
{0x00E0, 30}, // U+00E0
{0x00E1, 30}, // U+00E1
{0x00E2, 30}, // U+00E2
{0x00E3, 30}, // U+00E3
{0x00E4, 30}, // U+00E4
{0x00E5, 30}, // U+00E5
{0x00E6, 30}, // U+00E6
{0x00E7, 32}, // U+00E7
{0x00E8, 34}, // U+00E8
{0x00E9, 34}, // U+00E9
{0x00EA, 34}, // U+00EA
{0x00EB, 34}, // U+00EB
{0x00EC, 57}, // U+00EC
{0x00ED, 37}, // U+00ED
{0x00EE, 58}, // U+00EE
{0x00EF, 59}, // U+00EF
{0x00F0, 60}, // U+00F0
{0x00F1, 40}, // U+00F1
{0x00F2, 41}, // U+00F2
{0x00F3, 41}, // U+00F3
{0x00F4, 41}, // U+00F4
{0x00F5, 41}, // U+00F5
{0x00F6, 41}, // U+00F6
{0x00F8, 41}, // U+00F8
{0x00F9, 45}, // U+00F9
{0x00FA, 45}, // U+00FA
{0x00FB, 45}, // U+00FB
{0x00FC, 45}, // U+00FC
{0x00FD, 49}, // U+00FD
{0x00FE, 56}, // U+00FE
{0x00FF, 49}, // U+00FF
{0x0100, 12}, // U+0100
{0x0101, 30}, // U+0101
{0x0102, 12}, // U+0102
{0x0103, 30}, // U+0103
{0x0104, 12}, // U+0104
{0x0105, 30}, // U+0105
{0x0106, 13}, // U+0106
{0x0107, 32}, // U+0107
{0x0108, 13}, // U+0108
{0x0109, 32}, // U+0109
{0x010A, 13}, // U+010A
{0x010B, 32}, // U+010B
{0x010C, 13}, // U+010C
{0x010D, 32}, // U+010D
{0x010F, 33}, // U+010F
{0x0111, 33}, // U+0111
{0x0113, 34}, // U+0113
{0x0115, 34}, // U+0115
{0x0117, 34}, // U+0117
{0x0119, 34}, // U+0119
{0x011B, 34}, // U+011B
{0x011C, 14}, // U+011C
{0x011D, 36}, // U+011D
{0x011E, 14}, // U+011E
{0x011F, 36}, // U+011F
{0x0120, 14}, // U+0120
{0x0121, 36}, // U+0121
{0x0122, 14}, // U+0122
{0x0123, 36}, // U+0123
{0x0125, 31}, // U+0125
{0x0127, 31}, // U+0127
{0x0129, 61}, // U+0129
{0x012B, 62}, // U+012B
{0x012D, 63}, // U+012D
{0x012F, 37}, // U+012F
{0x0131, 37}, // U+0131
{0x0133, 37}, // U+0133
{0x0134, 15}, // U+0134
{0x0135, 38}, // U+0135
{0x0137, 31}, // U+0137
{0x013A, 39}, // U+013A
{0x013C, 39}, // U+013C
{0x013E, 39}, // U+013E
{0x0140, 39}, // U+0140
{0x0142, 39}, // U+0142
{0x0144, 40}, // U+0144
{0x0146, 40}, // U+0146
{0x0148, 40}, // U+0148
{0x0149, 40}, // U+0149
{0x014A, 64}, // U+014A
{0x014B, 65}, // U+014B
{0x014C, 17}, // U+014C
{0x014D, 41}, // U+014D
{0x014E, 17}, // U+014E
{0x014F, 41}, // U+014F
{0x0150, 17}, // U+0150
{0x0151, 41}, // U+0151
{0x0152, 17}, // U+0152
{0x0153, 41}, // U+0153
{0x0155, 40}, // U+0155
{0x0157, 40}, // U+0157
{0x0159, 40}, // U+0159
{0x015A, 19}, // U+015A
{0x015B, 43}, // U+015B
{0x015C, 19}, // U+015C
{0x015D, 43}, // U+015D
{0x015E, 19}, // U+015E
{0x015F, 43}, // U+015F
{0x0160, 19}, // U+0160
{0x0161, 43}, // U+0161
{0x0162, 20}, // U+0162
{0x0163, 44}, // U+0163
{0x0164, 20}, // U+0164
{0x0165, 44}, // U+0165
{0x0166, 20}, // U+0166
{0x0167, 44}, // U+0167
{0x0168, 21}, // U+0168
{0x0169, 45}, // U+0169
{0x016A, 21}, // U+016A
{0x016B, 45}, // U+016B
{0x016C, 21}, // U+016C
{0x016D, 45}, // U+016D
{0x016E, 21}, // U+016E
{0x016F, 45}, // U+016F
{0x0170, 21}, // U+0170
{0x0171, 45}, // U+0171
{0x0172, 21}, // U+0172
{0x0173, 45}, // U+0173
{0x0174, 23}, // U+0174
{0x0175, 47}, // U+0175
{0x0176, 25}, // U+0176
{0x0177, 49}, // U+0177
{0x0178, 25}, // U+0178
{0x0179, 26}, // U+0179
{0x017A, 50}, // U+017A
{0x017B, 26}, // U+017B
{0x017C, 50}, // U+017C
{0x017D, 26}, // U+017D
{0x017E, 50}, // U+017E
{0x017F, 35}, // U+017F
{0x01A0, 17}, // U+01A0
{0x01A1, 41}, // U+01A1
{0x01AF, 21}, // U+01AF
{0x01B0, 45}, // U+01B0
{0x01C6, 33}, // U+01C6
{0x01C9, 39}, // U+01C9
{0x01CC, 40}, // U+01CC
{0x01CD, 12}, // U+01CD
{0x01CE, 30}, // U+01CE
{0x01D0, 37}, // U+01D0
{0x01D1, 17}, // U+01D1
{0x01D2, 41}, // U+01D2
{0x01D3, 21}, // U+01D3
{0x01D4, 45}, // U+01D4
{0x01D5, 21}, // U+01D5
{0x01D6, 45}, // U+01D6
{0x01D7, 21}, // U+01D7
{0x01D8, 45}, // U+01D8
{0x01D9, 21}, // U+01D9
{0x01DA, 45}, // U+01DA
{0x01DB, 21}, // U+01DB
{0x01DC, 45}, // U+01DC
{0x01DD, 66}, // U+01DD
{0x01DE, 12}, // U+01DE
{0x01DF, 30}, // U+01DF
{0x01E0, 12}, // U+01E0
{0x01E1, 30}, // U+01E1
{0x01E2, 55}, // U+01E2
{0x01E3, 30}, // U+01E3
{0x01E4, 14}, // U+01E4
{0x01E5, 36}, // U+01E5
{0x01E6, 14}, // U+01E6
{0x01E7, 36}, // U+01E7
{0x01E9, 31}, // U+01E9
{0x01EA, 17}, // U+01EA
{0x01EB, 41}, // U+01EB
{0x01EC, 17}, // U+01EC
{0x01ED, 41}, // U+01ED
{0x01EE, 67}, // U+01EE
{0x01EF, 68}, // U+01EF
{0x01F0, 38}, // U+01F0
{0x01F3, 33}, // U+01F3
{0x01F4, 14}, // U+01F4
{0x01F5, 36}, // U+01F5
{0x01F7, 56}, // U+01F7
{0x01F9, 40}, // U+01F9
{0x01FA, 12}, // U+01FA
{0x01FB, 30}, // U+01FB
{0x01FC, 55}, // U+01FC
{0x01FD, 30}, // U+01FD
{0x01FE, 17}, // U+01FE
{0x01FF, 41}, // U+01FF
{0x0200, 12}, // U+0200
{0x0201, 30}, // U+0201
{0x0202, 12}, // U+0202
{0x0203, 30}, // U+0203
{0x0205, 34}, // U+0205
{0x0207, 34}, // U+0207
{0x0209, 37}, // U+0209
{0x020B, 37}, // U+020B
{0x020C, 17}, // U+020C
{0x020D, 41}, // U+020D
{0x020E, 17}, // U+020E
{0x020F, 41}, // U+020F
{0x0211, 40}, // U+0211
{0x0213, 40}, // U+0213
{0x0214, 21}, // U+0214
{0x0215, 45}, // U+0215
{0x0216, 21}, // U+0216
{0x0217, 45}, // U+0217
{0x0218, 19}, // U+0218
{0x0219, 43}, // U+0219
{0x021A, 20}, // U+021A
{0x021B, 44}, // U+021B
{0x021C, 69}, // U+021C
{0x021D, 70}, // U+021D
{0x021F, 31}, // U+021F
{0x0402, 71}, // U+0402
{0x0404, 72}, // U+0404
{0x0405, 73}, // U+0405
{0x0408, 74}, // U+0408
{0x0409, 75}, // U+0409
{0x040B, 71}, // U+040B
{0x040E, 76}, // U+040E
{0x0410, 77}, // U+0410
{0x0414, 78}, // U+0414
{0x0416, 79}, // U+0416
{0x0417, 80}, // U+0417
{0x041B, 75}, // U+041B
{0x041C, 81}, // U+041C
{0x041E, 82}, // U+041E
{0x0421, 72}, // U+0421
{0x0422, 71}, // U+0422
{0x0423, 76}, // U+0423
{0x0424, 83}, // U+0424
{0x0425, 84}, // U+0425
{0x0427, 85}, // U+0427
{0x042A, 71}, // U+042A
{0x042D, 86}, // U+042D
{0x042F, 87}, // U+042F
{0x0430, 88}, // U+0430
{0x0431, 89}, // U+0431
{0x0432, 90}, // U+0432
{0x0433, 91}, // U+0433
{0x0434, 92}, // U+0434
{0x0435, 93}, // U+0435
{0x0436, 94}, // U+0436
{0x0437, 95}, // U+0437
{0x0438, 91}, // U+0438
{0x0439, 91}, // U+0439
{0x043A, 91}, // U+043A
{0x043B, 96}, // U+043B
{0x043C, 97}, // U+043C
{0x043D, 91}, // U+043D
{0x043E, 98}, // U+043E
{0x043F, 91}, // U+043F
{0x0440, 99}, // U+0440
{0x0441, 100}, // U+0441
{0x0442, 101}, // U+0442
{0x0443, 102}, // U+0443
{0x0444, 103}, // U+0444
{0x0445, 104}, // U+0445
{0x0446, 91}, // U+0446
{0x0447, 105}, // U+0447
{0x0448, 91}, // U+0448
{0x0449, 106}, // U+0449
{0x044A, 107}, // U+044A
{0x044B, 91}, // U+044B
{0x044C, 91}, // U+044C
{0x044D, 108}, // U+044D
{0x044E, 90}, // U+044E
{0x044F, 109}, // U+044F
{0x0450, 93}, // U+0450
{0x0451, 93}, // U+0451
{0x0452, 110}, // U+0452
{0x0453, 91}, // U+0453
{0x0454, 111}, // U+0454
{0x0455, 112}, // U+0455
{0x0456, 113}, // U+0456
{0x0457, 114}, // U+0457
{0x0458, 115}, // U+0458
{0x0459, 96}, // U+0459
{0x045A, 91}, // U+045A
{0x045B, 116}, // U+045B
{0x045C, 91}, // U+045C
{0x045D, 91}, // U+045D
{0x045E, 102}, // U+045E
{0x045F, 106}, // U+045F
{0x0462, 71}, // U+0462
{0x0463, 117}, // U+0463
{0x0472, 82}, // U+0472
{0x0473, 98}, // U+0473
{0x0474, 76}, // U+0474
{0x0475, 102}, // U+0475
{0x048B, 91}, // U+048B
{0x048D, 118}, // U+048D
{0x048F, 99}, // U+048F
{0x0491, 91}, // U+0491
{0x0493, 91}, // U+0493
{0x0495, 91}, // U+0495
{0x0496, 79}, // U+0496
{0x0497, 94}, // U+0497
{0x0498, 80}, // U+0498
{0x0499, 95}, // U+0499
{0x049B, 91}, // U+049B
{0x049D, 91}, // U+049D
{0x049F, 91}, // U+049F
{0x04A1, 91}, // U+04A1
{0x04A3, 91}, // U+04A3
{0x04A5, 91}, // U+04A5
{0x04A7, 91}, // U+04A7
{0x04A8, 119}, // U+04A8
{0x04A9, 120}, // U+04A9
{0x04AA, 72}, // U+04AA
{0x04AB, 100}, // U+04AB
{0x04AC, 71}, // U+04AC
{0x04AD, 101}, // U+04AD
{0x04AE, 121}, // U+04AE
{0x04AF, 122}, // U+04AF
{0x04B0, 121}, // U+04B0
{0x04B1, 122}, // U+04B1
{0x04B2, 84}, // U+04B2
{0x04B3, 104}, // U+04B3
{0x04B4, 71}, // U+04B4
{0x04B5, 101}, // U+04B5
{0x04B6, 85}, // U+04B6
{0x04B7, 105}, // U+04B7
{0x04B8, 85}, // U+04B8
{0x04B9, 105}, // U+04B9
{0x04BB, 123}, // U+04BB
{0x04BC, 124}, // U+04BC
{0x04BD, 125}, // U+04BD
{0x04BE, 124}, // U+04BE
{0x04BF, 125}, // U+04BF
{0x04C1, 79}, // U+04C1
{0x04C2, 94}, // U+04C2
{0x04C4, 91}, // U+04C4
{0x04C5, 75}, // U+04C5
{0x04C6, 96}, // U+04C6
{0x04C8, 91}, // U+04C8
{0x04CA, 91}, // U+04CA
{0x04CB, 85}, // U+04CB
{0x04CC, 105}, // U+04CC
{0x04CE, 97}, // U+04CE
{0x04D0, 77}, // U+04D0
{0x04D1, 88}, // U+04D1
{0x04D2, 77}, // U+04D2
{0x04D3, 88}, // U+04D3
{0x04D5, 126}, // U+04D5
{0x04D7, 93}, // U+04D7
{0x04D8, 127}, // U+04D8
{0x04D9, 128}, // U+04D9
{0x04DA, 127}, // U+04DA
{0x04DB, 128}, // U+04DB
{0x04DC, 79}, // U+04DC
{0x04DD, 94}, // U+04DD
{0x04DE, 80}, // U+04DE
{0x04DF, 129}, // U+04DF
{0x04E0, 130}, // U+04E0
{0x04E1, 131}, // U+04E1
{0x04E3, 91}, // U+04E3
{0x04E5, 91}, // U+04E5
{0x04E6, 82}, // U+04E6
{0x04E7, 98}, // U+04E7
{0x04E8, 82}, // U+04E8
{0x04E9, 98}, // U+04E9
{0x04EA, 82}, // U+04EA
{0x04EB, 98}, // U+04EB
{0x04EC, 86}, // U+04EC
{0x04ED, 132}, // U+04ED
{0x04EE, 76}, // U+04EE
{0x04EF, 102}, // U+04EF
{0x04F0, 76}, // U+04F0
{0x04F1, 102}, // U+04F1
{0x04F2, 76}, // U+04F2
{0x04F3, 102}, // U+04F3
{0x04F4, 85}, // U+04F4
{0x04F5, 105}, // U+04F5
{0x04F7, 91}, // U+04F7
{0x04F9, 91}, // U+04F9
{0x1EF2, 25}, // U+1EF2
{0x1EF3, 49}, // U+1EF3
{0x2013, 7}, // U+2013
{0x2014, 7}, // U+2014
{0x2018, 133}, // U+2018
{0x2019, 134}, // U+2019
{0x201A, 135}, // U+201A
{0x201C, 133}, // U+201C
{0x201D, 134}, // U+201D
{0x201E, 135}, // U+201E
{0x2026, 6}, // U+2026
{0x2039, 53}, // U+2039
{0x203A, 54}, // U+203A
{0xFB00, 35}, // U+FB00
{0xFB01, 35}, // U+FB01
{0xFB02, 35}, // U+FB02
{0xFB03, 35}, // U+FB03
{0xFB04, 35}, // U+FB04
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
};
static const int8_t ubuntu_10_regularKernMatrix[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, -8, -8, -41, 0, -8, -8, 0, 0, 0, 4, 3,
0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -8, 0, -38, -24, 0, -26, -23, 0, 0, 0, -8, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0,
27, 0, 0, 0, 0, 0, 0, 0, 0, -10, -10, 0, 0, -10, -10, -6, 4, -3, 5, 0, 0, 6, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -10,
-4, 0, 0, 0, 0, 9, 0, 0, 0, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-15, 0, 6, 0, 0, -4, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -7, -4, -4, -4, 0, -4, -4, -4, -9, 0, -11, -6, -9, -14, -7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -4, -5, 0, 0,
-9, -7, 0, -7, -6, 0, -4, -4, -9, -6, -6, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, -14,
0, 0, 0, 0, 0, -4, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -21, -3, -3, -41, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -37, -25, 0, -21, -24,
-10, -5, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -6, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-10, -10, 9, 0, -11, -11, 5, -23, -8, -26, -13, 3, -27, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, -10, 0, 0, 0, 0, 8, 6, 0, 0, 0,
-11, -11, 3, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, -27, 0, 0, -34, 0, 0, -10,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9,
0, 0, 0, 0, -17, 0, -4, 0, -10, -17, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 5, -4, -7, -11, -14, 0, -7, -13, -5, 0, 5, 0, -10,
0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -17, 0, 0, 0, 0, 0, 5, 0, 0, -8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, -9, -9, -24, 0, -9, -9,
0, 10, 0, 11, 7, 7, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 10, -9, 0, -21, -20, 9, -17, -20, 6, 0, 0, -9, -9, 7, 0, 6, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, 0, 0, -4, -4, 0, -28, -4,
-7, -4, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -28, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -3, -3, -9, 0, -3, -3, -6, -15, -4, -12, -8, -13,
-18, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-15, -3, -5, -7, -8, -13, -9, -7, -15, -10, 0, -3, -3, -13, -4, -9, -5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -18, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, -26, -6, 0,
-21, 9, 0, 6, 0, 0, -5, 11, -6, -6, 10, 0, -6, -6, 5, -21, -3, -21, -6, 8, -26, 6, 0,
0, -9, 0, 0, -4, -4, -4, 0, -5, 0, 0, 0, 0, -4, -4, 4, 0, -5, -7, -6, 9, -5, 5,
-7, -3, -6, 0, 11, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, -23, 8, 0, -4, -4, -8, -4, -3, 0,
-7, -4, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -4, -7, -8, 0, 0, 0, -11, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -7, 0,
0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 7, -10, 0, 0, 5,
-6, 7, -7, -7, 8, 0, -7, -7, 3, 6, 0, 6, 0, 4, 6, 3, -3, 0, 0, 0, 0, -5, -5,
-5, 0, -5, 0, 0, 0, 0, -5, -5, 0, 0, -7, -5, -6, 5, -5, 0, -9, 0, -15, 0, 7, 0,
0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 4, 6, -5, -9, -4, -11, 0, -11, 0, -14, 0, -13, -4, -6, 0,
0, -8, 0, 0, 0, -4, -9, 0, -6, -6, -8, -14, -5, -4, 0, -14, -5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, -14, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -10, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -7, -4, -11, 0, -5, -7, 0, -4, 4, 0, 0, 0, 0, -5, 6, -9, -9, 6, 0,
-9, -9, 0, 0, -7, 0, 0, 0, 0, 0, -6, 0, -14, 0, 0, -5, -6, -5, 0, -8, 0, 0, 0,
0, -6, -5, 0, -5, -6, -8, -8, 3, -8, 0, -6, -7, -8, 0, 6, 0, 0, 0, 0, -5, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -4, 0, 0, -3, 0, -8, 0, 0, -22, 0, -20, -6, 4, -6, -15, -4, -4, -27, 0, -4, -4, 0,
5, 0, 6, 0, 0, 7, 0, -5, 0, -14, -17, 0, -5, -5, -5, 0, -5, 0, 0, 0, -9, -5, -5,
0, 0, -8, 0, 0, -12, 0, -9, 0, 0, 0, -7, -25, 0, 0, 0, 0, -5, 0, 0, 0, 0, -8,
-6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-34, 0, 0, 0, -3, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-6, 0, 0, -6, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -3, 0, -3, 0, -12, 0, 0, 0, -3, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-6, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -6, 0, -6, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -6, 0, -11,
5, -16, 6, 0, 4, -6, 11, -12, -12, 9, 0, -12, -12, 0, 6, 0, 7, 3, 9, 7, 7, 0, 0,
-9, 0, 0, -7, -7, -7, 0, -7, 0, 0, 0, 0, -7, -7, 5, 0, -4, -5, -16, 9, -3, 5, -6,
0, -20, 0, 12, 0, 0, 0, 7, -8, 4, 4, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -42, -3, 0, -46, 8, -23, 4,
0, 0, 0, 9, -15, -15, 9, 0, -15, -15, 5, -38, -6, -33, -15, 7, -38, 5, 0, 0, -11, 0, 0,
-4, -4, -4, 0, -4, 0, 0, 0, 0, -4, -4, 0, 0, 0, -13, -12, 7, -7, 3, -8, -5, -13, 4,
10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -40, -39, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -8, -4, -9, 0, -11, 0, -14, 0, -11, -4, -6, 0, 0,
-8, 0, 0, 0, -3, -9, 0, -6, -5, -8, -14, -5, -3, 0, -14, -4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, -13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -9, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -5, -3, -10, -4, 0, -4, -8, 0, -30, 0, -21, 0, 0, 0, -17, 0, 0, -32, 0, 0,
0, 0, 0, 0, 0, 0, -6, 0, 0, -5, 0, -14, -6, 0, -7, -7, -11, 0, -7, 0, 0, 0, 0,
-7, -4, 0, 0, 0, 3, 3, 0, 3, 0, 0, -8, -6, 0, -28, 0, 0, 0, 0, -5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 3, -38, -5, -8, -4, 0, 0, -11, 0, 0, 0, -11, -4, -6, 0, 0, -8, 0, 0, 0, -3, -9,
0, -6, -5, -8, -14, -5, -3, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -3, -7,
0, 0, -4, 0, 0, 5, 0, 4, 0, -4, -5, 9, -4, -4, 7, 0, -4, -4, 0, 0, 0, -3, 0,
6, -6, 5, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 7, 0, 3, -6, -5, -7, 0, 10, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, -9,
4, 0, -25, -16, -29, -28, 7, -17, -21, -9, -9, -30, 0, -9, -9, 0, 8, 0, 9, 6, 5, 10, 0,
0, 0, -11, -15, 0, -18, -18, -18, 0, -18, 0, 0, 0, -13, -18, -18, -15, 0, -11, -7, -27, -6, -7,
-10, -8, 0, -28, -25, -24, 0, 0, 7, 10, -26, 17, 7, 4, 0, -24, -22, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, 0, -3, 0, 0, -3,
0, -14, -3, 0, 0, -3, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, -12,
-5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -3, -7,
0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 5, -11, 5, 0, -25, -3, -22, -7,
8, -13, -21, -6, -6, -32, -2, -6, -6, 0, 9, 0, 10, 7, 6, 11, 0, 0, 0, -9, -8, 0, -15,
-15, -15, 0, -15, 0, 0, 0, -10, -15, -15, -5, 0, -8, 0, 0, 0, 0, -1, -8, 0, -14, -4, -27,
0, 4, 0, 11, -17, 14, 10, 4, 0, -9, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 6, 8, -25, 0, 4, -5, 0, 0, -12, 0, -16, -4, 5, -6, -6,
-5, -5, -20, 0, -5, -5, 0, 6, 0, 7, 4, 3, 8, 0, 0, 0, -12, -10, 0, -7, -7, -7, 0,
-9, 0, 0, 0, -7, -7, -7, -6, 0, -6, 0, 0, 0, 0, 0, -6, 0, -7, 0, -16, 0, 0, 0,
6, -9, 4, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 6, 8, -13, 0, 0, -8, 0, -9, 4, -9, 3, 0, 0, -9, 9, -8, -8, 7,
0, -8, -8, 0, 4, 0, 6, 0, 6, 6, 4, 0, 0, -11, 0, 0, -6, -6, -6, 0, -6, 0, 0,
0, 0, -6, -6, 0, 0, -3, -4, -12, 6, -2, 0, -9, 0, -16, 0, 9, 0, 0, 0, 0, -10, 0,
0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, 0, 0, -14, 6, 0, -22, -16, -27, -13, 8, -19, -26, -14, -14, -38, -3, -14, -14,
0, 10, 0, 11, 8, 7, 12, 4, 0, 0, -9, -14, 0, -16, -16, -16, 0, -16, 0, 0, 0, -13, -16,
-16, -7, 0, -11, 0, 0, -5, 0, -9, -7, 0, -25, -11, -27, 0, 0, 0, 14, -26, 13, 11, 0, 0,
-14, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
6, -26, 0, 0, -7, 0, 0, 4, -20, 0, 0, 0, -5, 6, -12, -12, 6, 0, -12, -12, 0, 0, -5,
3, 0, 0, 4, 0, -6, 0, -14, 0, 0, -5, -6, -5, 0, -8, 0, 0, 0, 0, -6, -5, 0, -4,
-6, -8, -8, 3, -8, 0, -12, -5, -17, 0, 6, 0, 0, 0, 3, -5, 4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -14, -14, -9, 0, -14, -14, -9, -11, -13, -10, -12, -12,
-9, -14, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-11, -14, -6, -7, -8, -10, -9, 9, -10, 0, 0, -14, -14, -12, -16, 0, -12, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -16, 0, -9, 0, 0, -9, 0, 0, -5, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -3, -3, 0, 0, -3, -3, 0, 0, 0, 0, -3, -3, 0, -5, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -3,
0, 0, 0, 0, 0, 0, 0, 0, -3, -3, -3, -7, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7,
0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, -8, -7, 0, 0,
0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -4, 0, -5, 0, 0, -7, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, -12, 0, -9, 0, 0, 0, -7, 0, -9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, -6, -4, -7, 0, -7, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -11, -11, 0, 0, 0, 0, 0, 0, 3, -11, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, -4, 0, 0, -5,
0, 0, 0, 0, -4, 0, 0, 0, 0, 4, 3, 5, 4, 0, -7, 0, -10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 4, -17, -12, -14, 0, 8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 6, 6, 5, 6, 0, 0, 13, -6, 3, 0, 0, 10, 0, 13, -6, 13, 10,
13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 7, -18, 0, -12, 0, -8, -7, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -5, -4, 0, -6, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -10,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -9, 4, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -8, 0, 0, -9, -9, -9, 0, -10, 0, 0, 0, 0, -10, -9, 0, 0, 0, 0, 0, 6,
0, 0, -6, 0, -11, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, -8, -7,
0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -5, 0, -6, 0, 0,
-7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -9, 0, 0, -11, 0, -9, -7, 0, 0, -8,
0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -4, -6, -5, -7, 0, -7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -9, 0, 0, -11, 0, -9, -7, 0, 0, -7, 0, -9, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -4, -6, -5, -6, 0, -7, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -7, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -18, -11, -15, 0, -14, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -4, 0, 0, 0, 7, 6, 5, 7, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 5, -17, 0, 0, 0, 0, 0, 4, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, -4, -5, -3, 0, -3, 0, 0, 0, 0, -5, -4, 0,
0, 0, 0, 0, 6, 0, 0, -7, 0, -9, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 3, -12, 0, -11, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -9, 0, 0, -5, -5, -5, 0, -4, 0, 0, 0, 0, -5, -5, 0, 0, 0, 6,
6, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -12, 0, 0, 0,
0, 3, -11, 0, -9, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -9, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 6, 6, 5, 6,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9,
0, 0, -7, -7, -7, 0, -7, 0, 0, 0, 0, -7, -7, 0, 0, 0, 0, 0, 6, 0, 0, -7, 0,
-10, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, -6,
-7, -6, -4, -7, 0, 0, 0, 0, -7, -6, 0, -4, -4, 0, 0, 0, 0, 0, -9, -7, -11, 0, 0,
0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4,
-9, -10, -4, 0, -10, -10, -7, 0, -8, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, -4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -6, 0, 0, 0, -4, 9, 0, 0, 0,
-10, -10, 0, -4, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, -3, 0, 0, -5,
0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, -7,
0, 0, 0, -6, -8, -4, -8, -6, -10, -8, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -6, -5, -6, -8, -7, -6, -8, -9, 0, 0, 0, -10,
0, -8, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, -8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -28, -4, -10, -7, 0, -16, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0,
-4, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, -14, 0, 0, 0, -7, -29, 0, -15, -7, -17,
-26, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-29, 0, -8, -12, -12, -18, -7, -11, -19, -13, 0, 0, 0, -17, -5, -14, -8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -26, 0, 0, -3, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -15, -12, -12, -21, 0, -12, -12, -10, -37, -15, -16, -13, -23, -22, -23, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -11, 0, -13, 0, -20, 0,
-14, 0, -11, 0, -9, 0, 0, -19, 0, 0, 0, 0, -15, 0, -7, 0, -14, -14, -16, -5, 0, -14, -5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0,
0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, -8, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -5, -19, 0, -13, 0, -9, -11, 0, 0, 0, 0, -7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -8, 0, -9, 0, 0, -7, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -13, 0, -9, -7, 0, 0, -7, 0, -9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -5, -4, -6, -5, -6, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -12, -12, 0, 0, 6, 0, 20, 0, -4, -4, 0, -4, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 30, 23, -4, 5, -4, -4, -4, 0, -4, 3, 3, 5, -4, -4, -4,
-4, 3, -4, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 23, 31, 37, 0, 37, 37, 29, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14,
0, 0, -7, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, -11, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, -8, -7, -5, -8, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -8, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -12, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, -10, -5, -5, 0, 0, 0, -7, -4,
0, 0, 0, -4, 0, -4, -4, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-19, -4, -4, -4, -4, 0, -4, -4, -4, -4, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -7, 0, -4, 4, 0, 0, 0, 0, -5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -7, -8, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 5, 0, 0, 6, 0, 0, 0, 0, -9, -9,
0, 0, 0, 0, 0, -5, 0, 0, 0, -5, 0, 0, 0, 0, -6, 0, -5, -5, -8, -6, 3, -6, 0,
-5, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, -8, -4, 0, -8, 0, 0, 0, 0, -6, 0, 0,
0, -6, 0, -4, 0, 0, -4, -12, 0, -6, -10, -4, 5, -5, -4, -4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -6, 0, 0, 0, 0, -6, -7, 0,
-6, 0, 0, 0, 0, 0, 0, -6, -3, 0, 0, 0, 0, 0, -11, -5, 0, -5, 0, 0, -11, 0, 0,
0, 0, 0, 0, 0, 0, 0, -11, -3, 0, 0, 0, -5, 0, -6, 0, 0, 0, 0, -3, 0, -10, -3,
0, 0, 0, 0, 0, -9, 4, 0, -25, -16, -29, -28, 7, -17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -8, 0, -28, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, -9, 0, -37, -22, 7, -21, -21, 0, 0, 0, -9, -9, 5, 0, 6, 0, -32, 0,
-30, -31, -38, -38, -25, -27, -38, -35, -38, -31, -38, -21, -21, -26, -22, -25, -31, -21, -26, -37, 9, -38, -35,
0, 14, 0, 9, 0, -25, -7, -40, 0, -21, 0, 0, -31, -32, 0, -32, -44, 0, -21, -37, 0, 0, -22,
0, 0, -8, 0, 0, 7, -10, 0, 0, 5, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -9, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 6, -7, 0, 7, 6, 0, 7, 6, 0, 0, 0, -7, -7, 4, 0, 0, 0, 0, -5, 0, 0, 6,
-5, 5, 0, 6, 0, -5, 0, -5, -11, -5, -5, 5, -16, 0, -11, 0, 0, 7, 0, 0, 0, 0, 0,
7, 0, 0, -10, -3, 6, -5, 0, 0, -17, 0, -4, 0, 0, 0, -12, 0, 0, 4, 6, 0, -4, 0,
0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -15, -5, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0,
0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, -5, -25, -6, -7, -12, 0,
0, 0, 0, -10, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -17,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, -4, 0, 0, 0,
0, 0, 0, 0, 0, 0, -4, -5, 0, -10, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -12, -8, 0, 0, 0, 0, -12, 0, 0, -5, 0, 0, -6, -6, -6, -5, -12, -4, -4, 0, 0,
-7, -4, -7, 0, 0, -3, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -6, 0, -11, 5, -16, 6, 0,
4, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -20, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -12, 0, 8, 8, 0, 11, 9,
8, 5, 0, -12, -12, 9, 0, 7, 6, 0, -8, 0, 0, 9, -6, 9, 0, 8, 0, -6, 0, -6, -13,
-16, -9, 9, -20, 0, -8, 6, 6, 7, -6, 5, 0, 0, 0, 7, -8, 0, -14, -7, 0, -16, 0, -13,
-20, 0, -6, -5, 0, 6, -17, 0, 0, 0, 5, 0, 5, -11, 5, 0, -25, -3, -22, -7, 8, -13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -14, -4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, -6, 0, -27, -21, 8, -21, -20, 5, 0, -2,
-6, -6, 6, 0, 6, 0, -9, -6, -6, -6, -21, -13, 0, 0, -21, -10, -13, -6, -13, 0, 0, -13, 0,
0, -6, 0, 0, -10, 11, -13, -6, 0, 14, 0, 11, 0, 0, -7, -13, 0, 0, 0, 0, 0, -9, 0,
-8, 0, 0, 0, 0, 6, 8, -25, 0, -26, -6, 0, -21, 9, 0, 6, 0, 0, -5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -3, -6, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -21, -6, 5, 9, 8, 0, 11, 9, 7, 5, 0, -6, -6, 8,
-17, 7, 5, 0, -5, 0, 0, 9, -4, 9, 0, 8, 0, -4, 0, -4, -13, -5, -4, 9, -9, 0, -8,
6, 6, 0, 0, 5, 0, 0, 0, 0, -8, 0, -8, 0, -26, -7, 0, -12, -6, 0, -5, 0, 0, 6,
-12, 0, -24, -23, 8, 0, -4, -4, -8, -4, -3, 0, -7, -4, -7, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -6, 0, 0, 0, -3, -7, -6, 0, -5,
0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -4, 0,
0, 0, 0, -4, 0, 9, -6, 6, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -5, 8, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -6, 0, 8, 7, 0, 8, 7, 6, 5, 0, -6, -9, 6, -9, 6, 0, 0, 0, 0,
0, 7, 0, 7, 0, 7, 0, 0, 0, 0, 0, 10, 0, 7, -6, 0, 0, 0, 5, 0, 0, 0, 0,
0, 22, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 6, 10, 0, 0, 0, 0, 0,
-4, -4, -9, 0, 0, 0, -5, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -4, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -3, 0, 0, -5, 0, 0, 0, -4, -5, -5, 0, -5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -5, -7,
-5, 0, 0, 0, 0, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4,
0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -3, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -8, -4, -9, 0, -11, 5,
-14, 0, -11, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -14, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, -8, -8, -12,
-6, -7, -16, -10, 0, 0, 0, -8, 0, -10, 0, -4, 0, 0, 0, -8, 0, -3, -4, -9, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -4, -4, -5, 0, 0, 0, 0, 0, -14, 0,
0, 0, 0, 0, 0, 0, -4, -9, 0, -4, -5, -3, -10, -4, 0, -4, -8, 0, -30, 0, -21, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, -14, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, -24, 0, -17, -23, -9,
-5, 0, 0, 0, -6, 0, 0, 0, -6, 0, 0, 0, -15, 0, 0, 0, -16, -4, 0, 0, 0, 0, 3,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 5, 0,
-4, 0, 0, 0, 0, 0, 0, 0, 3, -38, 0, 0, -9, 4, 0, -25, -16, -29, -28, 7, -17, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -28, -25, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -9, 0, -22, -22, 7, -21, -21, 0, 0, 0, -9,
-9, 5, 0, 6, 0, -15, 0, -25, -25, -23, -18, -23, -27, -23, -25, -18, -13, -18, -21, -7, -18, -6, -25,
-25, -21, -26, -25, 9, -26, -26, 0, 14, 0, 9, 0, -23, -7, -26, 10, -7, 0, 0, -22, -27, 0, -27,
-45, 0, -21, -38, 0, 0, -22, -5, -8, -4, -9, 0, -11, 0, -14, 0, -11, -4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, -18, -19, -12, -6, -18, -20, -15, 0, 0, 0, -8, 0,
-13, 0, -6, 0, -5, -4, -13, 0, -4, -3, -14, -6, 0, -5, 0, 0, 0, 0, 0, 0, -4, 0, 0,
0, -5, 0, 0, -5, -5, -5, -5, 0, 0, 0, 0, 0, 0, -5, 0, 0, -6, 0, 0, -3, -19, 0,
-3, -5, -3, -10, 0, 0, -8, 0, -9, 4, -9, 3, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -9, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, 9, 0, 0, 0, 0, -8, -8, 6, 0, 0, 0, 0,
-9, 0, 0, 7, -6, 7, 0, 6, 0, -6, 0, -6, -10, -2, -6, 6, -15, 0, -10, 0, 0, 6, -7,
0, 0, 0, 0, 6, -9, 0, 0, -8, 6, -4, 0, 0, -16, 0, 0, -6, 0, 0, -11, 0, 0, 0,
3, 0, -4, 0, 9, -6, 6, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -5, 8, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -6, 0, 8, 7, 0, 8, 7, 6, 5, 0, -6, -9, 6, -9, 6, 0, 0, 0, 0, 0,
7, 0, 7, 0, 7, 0, 0, 0, 0, 0, 10, 0, 7, -6, 0, 0, 0, 5, 0, 0, 0, 0, 0,
23, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 6, 10, 0, 0, 0, 0, -5, -8,
-4, -9, 0, -11, 5, -14, 0, -11, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -3, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9,
0, 0, -7, -7, -11, -6, -6, -15, -10, 0, 0, 0, -8, 0, -9, 0, 0, 0, 0, 0, -8, 0, 0,
-4, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, -5, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -9, 0, -4, -5, -3, -10, 0, -9, 0, -8, -7,
0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -4, -8, -4, 0, -6, -6, 6, -7,
-6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -5, 0, 0, 0, 0, 0,
0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -5, 0, 0, -5, 0, 0, 0, 0, -12, 0, -8, -5, 0, 0, 0, 0, -7, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, -26, -19, -15, 0, -17, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -4, -7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, -12, 0, 0, 0, 0, 7, 7, 0, 6, 0, 0,
7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 7, 0, 0, 0, 0,
0, 7, 0, 0, 0, 0, 0, -10, 0, 8, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7, 0, 7, 0, 7, 0, 0, 0, 0, 0, 8, -4, 7, -4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0,
0, 0, 0, 0, -9, 0, -9, -6, -4, 5, -4, -4, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -4, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, -4, 0, 0, -4, 0, -8, 0,
0, -4, -6, 0, 0, 0, -9, 4, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -6, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
-9, 8, 0, 7, 0, -10, 0, -9, 0, 0, -10, 6, 0, 0, 0, 0, 5, 0, -7, 0, 0, 0, 0,
0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0,
-8, -6, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0,
-9, 4, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0,
-11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -9, 8, 0, 7, 0, -10,
0, -9, 0, 0, -10, 6, 0, 0, 0, 0, 5, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -9, -7, -7, 6, -8, -6,
-10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -6, 0, 0, 0, 0, 0, 0,
-5, 0, -6, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0,
0, 0, 0, 0, -6, 0, 0, -6, -7, -9, 0, 0, -11, -4, -9, -7, -6, 6, -7, -6, -9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -5, 0, 0, 0, 0, 0, 0, -5, 0, -6,
0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0,
0, -5, 0, 0, -5, -7, -9, 0, 0, 0, 0, 0, 0, 3, -11, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -4, -10, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 0, 6, 0, -4, 0, 0, 5, 4, -4, 5, 0, 0, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -17, -10, -15, 0, -16, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -4, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -12, 0, 0, 0, -12, 0, 0, 0, 0, 7, 7, 0, 6, 0, 0, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 7, 0, 0, 0, 0, 0, 7, 0, 0,
0, 0, 0, 0, 0, -5, 0, -7, 0, -10, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -8, -4, 0, 0, -9, 0, -4, 0, -4, 7, 6, -4, 4, 0, 0, 7, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 4, -10, -7,
-11, 0, -9, -7, -8, 6, -8, -7, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -6, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-9, -7, -4, 0, 0, 0, 0, 0, -5, 0, -6, 0, 0, 0, -5, 0, -4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, -4, -7, -7, -9, 0, 0, 0, -5, 0,
0, 0, -5, 0, 0, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-7, -4, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, -7, 7, 0, 6,
0, -7, 0, -7, 0, 0, -7, 6, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0,
-5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 8, 0, 0, 0,
11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 0, 7, 0, 0, 0,
0, 0, 8, -4, 7, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, -27, 0, -8, -17, 0, 0, 0, 0, -6,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -6,
0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0,
0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, -11, 0, -9, -7, -6, 6, -8, -5, -10, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -5, 0, 0, 0, 0, 0, 0, -5, 0, -6, 0,
0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-5, 0, 0, -5, -7, -9, 0, 0, -11, 0, -9, -7, -7, 6, -8, -6, -10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -8, -6, 0, 0, 0, 0, 0, 0, -5, 0, -6, 0, 0, 0, -4,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0,
-6, -7, -9, 0, 0, -19, -6, 0, -8, 0, 0, 0, 0, -10, -4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -4, -6, 0, 0, 0, -5, 0, 0, -5, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -4, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -8, -6, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -4, 0, 0, 0, 0, -4, 0, -4, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0,
0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8,
0, -9, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -4, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, -6, -8, -8,
0, 0, 0, 0, -10, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0,
-14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, -8, -17, 0, 0, 0,
0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-13, -6, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0,
0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, -6, 7, 0, 0, -22, -23, -16, 12, -13,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -30, -15, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, -6, 0, 0, -17, 11, -23, -17, 7, 6,
0, -6, -10, 8, 6, 11, 0, -18, 0, -15, -17, -35, -29, -11, -13, -32, -21, -29, -17, -30, -6, -6, -26,
-8, -12, -17, -6, -12, -25, 15, -29, -21, 0, 0, 0, 15, 0, -11, -7, -30, 0, -6, 0, 0, -17, -18,
0, -19, -13, 6, -7, -13, 0, 0, 0, 0, 0, 0, 0, 7, -26, -7, -15, 0, -12, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 6, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 7, 0, -9, 0, 0, 0, 0, 11, 11, 0, 10, 6, 0,
11, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 8, 0, 0, 0, 0,
0, 10, 0, 0, 0, 0, 0, -14, -4, 0, -6, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -32, 0, 0, -22, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, -17, 0, 0, 0, -5, 0, -11, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-6, -19, -4, 0, -6, -11, 6, 0, -5, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -21, 0, -6, -5, -6, -11, -5, 0, -13, -7, 0, 0, 0, -12, -4, -7, -6, 0, 0, 0, 0, 0,
0, -10, -7, -7, 0, 0, -3, 0, 0, 0, 0, -6, 0, -5, 0, -6, 0, -5, 0, 0, -5, -5, 9,
-5, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, -7, -7, 0, -7, 0, 0, 0, 0, -22, 0,
0, -10, -4, 0, 0, -4, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0,
0, 0, 0, 0, 0, -11, 0, 0, -5, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 6, 0, -22,
-16, -27, -13, 8, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0,
-25, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -14, 0, 0, 0,
0, -26, 0, 0, 0, -3, -14, 0, 7, 0, 0, 0, -14, -9, -11, -12, -25, -16, -6, -8, -25, -16, -16,
-13, -16, 0, 0, -23, -5, -7, -12, 0, -7, -18, 11, -22, -14, 0, 0, 0, 11, 0, -4, 0, -22, 12,
0, 0, 0, -9, -14, 0, -14, -8, 0, 0, -8, 4, 6, -26, 0, 0, 0, -4, 3, -12, 0, -11, 0,
-13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -5, 0, 0, -12, 0, -5, 0, -5, 7,
6, 0, 5, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
0, 0, 0, 0, 0, 0, 7, 0, 0, 4, -12, -4, -29, -5, -6, -9, 0, 0, 0, 0, -9, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -16, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -19, -6, -8, -8, 0, 0, 0, 0, -10, -4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -6, -4, -11, 0, -6, 0, -7, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, -4, -4, 0, 0, 0, -4, 0, -3, 0,
-6, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -5, -5, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -5, 0, -3, 0, 0, 0,
0, 0, 0, -15, 0, -10, -6, -4, 5, -4, -4, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -4, 0, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -4, 0, 0, 0, 0,
0, -4, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -6, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, -4, 0,
0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, -10, -6, -5, 5,
-4, -4, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, -13, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -4, 0, 0, -4, 0, 0, 0, -5, -8, -4, -9, 0, -11, 5, -14, 0, -11,
-4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -14, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, 0, 0, 0, 0, -6, 0, 0,
0, 0, 0, 0, -8, 0, 0, 0, -4, 0, 0, 0, -7, 0, 0, -4, -8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, -4, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0,
0, 0, 0, -4, 0, 0, -4, -5, -3, -10, 0, -11, 0, -9, -7, -6, 6, -8, -5, -10, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, -6, 0, 0, 0, 0, 0, 0, -5, 0, -6, 0,
0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0,
-6, 0, 0, -6, -7, -9, 0, 0, 0, -4, 0, -6, -4, 0, -5, -4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0,
0, -6, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, -11, -7, 0, -4, 0, 0, -11, 0,
-4, 0, 0, 0, -4, -4, -4, 0, -9, -4, 0, 0, 0, -7, 0, -8, 0, 0, 0, 0, 0, 0, -10,
0, 0, 0, 0, 0, -7, -6, 0, 0, 0, 0, 0, 0, -5, -4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -7, 0, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, -7, -7, -38, 0, -7, -7, 0, 0, 0, 6,
6, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -7, 0, 0, 0, 0, -25, 0, 0, 0, 0, -7, -7, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 9, -8, -8, 9, 0, -9, -10, 5, -22, -6, -25, -11, 4, -26,
7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22,
-8, 0, 0, 0, 0, 9, 0, 0, 0, 0, -9, -9, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
};
static const EpdLigaturePair ubuntu_10_regularLigaturePairs[] = {
{0x00660066, 0xFB00}, // f f -> U+FB00
{0x00660069, 0xFB01}, // f i -> U+FB01
{0x0066006C, 0xFB02}, // f l -> U+FB02
{0xFB000069, 0xFB03}, // U+FB00 i -> U+FB03
{0xFB00006C, 0xFB04}, // U+FB00 l -> U+FB04
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};
static const EpdFontData ubuntu_10_regular = {
ubuntu_10_regularBitmaps,
ubuntu_10_regularGlyphs,
ubuntu_10_regularIntervals,
43,
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
24,
20,
-4,
false,
perf: Reduce overall flash usage by 30.7% by compressing built-in fonts (#831) ## Summary **What is the goal of this PR?** Compress reader font bitmaps to reduce flash usage by 30.7%. **What changes are included?** - New `EpdFontGroup` struct and extended `EpdFontData` with `groups`/`groupCount` fields - `--compress` flag in `fontconvert.py`: groups glyphs (ASCII base group + groups of 8) and compresses each with raw DEFLATE - `FontDecompressor` class with 4-slot LRU cache for on-demand decompression during rendering - `GfxRenderer` transparently routes bitmap access through `getGlyphBitmap()` (compressed or direct flash) - Uses `uzlib` for decompression with minimal heap overhead. - 48 reader fonts (Bookerly, NotoSans 12-18pt, OpenDyslexic) regenerated with compression; 5 UI fonts unchanged - Round-trip verification script (`verify_compression.py`) runs as part of font generation ## Additional Context ## Flash & RAM | | baseline | font-compression | Difference | |--|--------|-----------------|------------| | Flash (ELF) | 6,302,476 B (96.2%) | 4,365,022 B (66.6%) | -1,937,454 B (-30.7%) | | firmware.bin | 6,468,192 B | 4,531,008 B | -1,937,184 B (-29.9%) | | RAM | 101,700 B (31.0%) | 103,076 B (31.5%) | +1,376 B (+0.5%) | ## Script-Based Grouping (Cold Cache) Comparison of uncompressed baseline vs script-based group compression (4-slot LRU cache, cleared each page). Glyphs are grouped by Unicode block (ASCII, Latin-1, Latin Extended-A, Combining Marks, Cyrillic, General Punctuation, etc.) instead of sequential groups of 8. ### Render Time | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Median** | 414.9 ms | 431.6 ms | +16.7 ms (+4.0%) | | **Pages** | 37 | 37 | | ### Memory Usage | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Heap free (median)** | 187.0 KB | 176.3 KB | -10.7 KB | | **Heap free (min)** | 186.0 KB | 166.5 KB | -19.5 KB | | **Largest block (median)** | 148.0 KB | 128.0 KB | -20.0 KB | | **Largest block (min)** | 148.0 KB | 120.0 KB | -28.0 KB | ### Cache Effectiveness | | Misses/page | Hit rate | |---|---|---| | **Compressed (cold cache)** | 2.1 | 99.85% | ------ ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES**_ Implementation was done by Claude Code (Opus 4.6) based on a plan developed collaboratively. All generated font headers were verified with an automated round-trip decompression test. The firmware was compiled successfully but has not yet been tested on-device. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:30:15 +11:00
nullptr,
0,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
ubuntu_10_regularKernLeftClasses,
ubuntu_10_regularKernRightClasses,
ubuntu_10_regularKernMatrix,
fix: Use fixed-point fractional x-advance and kerning for better text layout (#1168) ## Summary **What is the goal of this PR?** Hopefully fixes #1182. _Note: I think letterforms got a "heavier" appearance after #1098, which makes this more noticeable. The current version of this PR reverts the change to add `--force-autohint` for Bookerly, which to me seems to bring the font back to a more aesthetic and consistent weight._ #### Problem Character spacing was uneven in certain words. The word "drew" in Bookerly was the clearest example: a visible gap between `d` and `r`, while `e` and `w` appeared tightly condensed. The root cause was twofold: 1. **Integer-only glyph advances.** `advanceX` was stored as a `uint8_t` of whole pixels, sourced from FreeType's hinted `advance.x` (which grid-fits to integers). A glyph whose true advance is 15.56px was stored as 16px -- an error of +0.44px per character that compounds across a line. 2. **Floor-rounded kerning.** Kern adjustments were converted with `math.floor()`, which systematically over-tightened negative kerns. A kern of -0.3px became -1px -- a 0.7px over-correction that visibly closed gaps. Combined, these produced the classic symptom: some pairs too wide, others too tight, with the imbalance varying per word. #### Solution: fixed-point accumulation with 1/16-pixel resolution, for sub-pixel precision during text layout All font metrics now use a "fixed-point 4" format -- 4 fractional bits giving 1/16-pixel (0.0625px) resolution. This is implemented with plain integer arithmetic (shifts and adds), requiring no floating-point on the ESP32. **How it works:** A value like 15.56px is stored as the integer `249`: ``` 249 = 15 * 16 + 9 (where 9/16 = 0.5625, closest to 0.56) ``` Two storage widths share the same 4 fractional bits: | Field | Type | Format | Range | Use | |-------|------|--------|-------|-----| | `advanceX` | `uint16_t` | 12.4 | 0 -- 4095.9375 px | Glyph advance width | | `kernMatrix` | `int8_t` | 4.4 | -8.0 -- +7.9375 px | Kerning adjustment | Because both have 4 fractional bits, they add directly into a single `int32_t` accumulator during layout. The accumulator is only snapped to the nearest whole pixel at the moment each glyph is rendered: ```cpp int32_t xFP = fp4::fromPixel(startX); // pixel to 12.4: startX << 4 for each character: xFP += kernFP; // add 4.4 kern (sign-extends into int32_t) int xPx = fp4::toPixel(xFP); // snap to nearest pixel: (xFP + 8) >> 4 render glyph at xPx; xFP += glyph->advanceX; // add 12.4 advance ``` Fractional remainders carry forward indefinitely. Rounding errors stay below +/- 0.5px and never compound. #### Concrete example: "drew" in Bookerly **Before** (integer advances, floor-rounded kerning): | Char | Advance | Kern | Cursor | Snap | Gap from prev | |------|---------|------|--------|------|---------------| | d | 16 px | -- | 33 | 33 | -- | | r | 12 px | 0 | 49 | 49 | ~2px | | e | 13 px | -1 | 60 | 60 | ~0px | | w | 22 px | -1 | 72 | 72 | ~0px | The d-to-r gap was visibly wider than the tightly packed `rew`. **After** (12.4 advances, 4.4 kerning, fractional accumulation): | Char | Advance (FP) | Kern (FP) | Accumulator | Snap | Ink start | Gap from prev | |------|-------------|-----------|-------------|------|-----------|---------------| | d | 249 (15.56px) | -- | 528 | 33 | 34 | -- | | r | 184 (11.50px) | 0 | 777 | 49 | 49 | 0px | | e | 208 (13.00px) | -8 (-0.50px) | 953 | 60 | 61 | 1px | | w | 356 (22.25px) | -4 (-0.25px) | 1157 | 72 | 72 | 0px | Spacing is now `0, 1, 0` pixels -- nearly uniform. Verified on-device: all 5 copies of "drew" in the test EPUB produce identical spacing, confirming zero accumulator drift. #### Changes **Font conversion (`fontconvert.py`)** - Use `linearHoriAdvance` (FreeType 16.16, unhinted) instead of `advance.x` (26.6, grid-fitted to integers) for glyph advances - Encode kern values as 4.4 fixed-point with `round()` instead of `floor()` - Add `fp4_from_ft16_16()` and `fp4_from_design_units()` helper functions - Add module-level documentation of fixed-point conventions **Font data structures (`EpdFontData.h`)** - `EpdGlyph::advanceX`: `uint8_t` to `uint16_t` (no memory cost due to existing struct padding) - Add `fp4` namespace with `constexpr` helpers: `fromPixel()`, `toPixel()`, `toFloat()` - Document fixed-point conventions **Font API (`EpdFont.h/cpp`, `EpdFontFamily.h/cpp`)** - `getKerning()` return type: `int8_t` to `int` (to avoid truncation of the 4.4 value) **Rendering (`GfxRenderer.cpp`)** - `drawText()`: replace integer cursor with `int32_t` fixed-point accumulator - `drawTextRotated90CW()`: same accumulator treatment for vertical layout - `getTextAdvanceX()`, `getSpaceWidth()`, `getSpaceKernAdjust()`, `getKerning()`: convert from fixed-point to pixel at API boundary **Regenerated all built-in font headers** with new 12.4 advances and 4.4 kern values. #### Memory impact Zero additional RAM. The `advanceX` field grew from `uint8_t` to `uint16_t`, but the `EpdGlyph` struct already had 1 byte of padding at that position, so the struct size is unchanged. The fixed-point accumulator is a single `int32_t` on the stack. #### Test plan - [ ] Verify "drew" spacing in Bookerly at small, medium, and large sizes - [ ] Verify uppercase kerning pairs: AVERY, WAVE, VALUE - [ ] Verify ligature words: coffee, waffle, office - [ ] Verify all built-in fonts render correctly at each size - [ ] Verify rotated text (progress bar percentage) renders correctly - [ ] Verify combining marks (accented characters) still position correctly - [ ] Spot-check a full-length book for any layout regressions --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6 helped figure out a non-floating point approach for sub-pixel error accumulation**_
2026-03-01 10:43:37 -06:00
417,
471,
132,
135,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
ubuntu_10_regularLigaturePairs,
5,
Aleo, Noto Sans, Open Dyslexic fonts (#163) ## Summary * Swap out Bookerly font due to licensing issues, replace default font with Aleo * I did a bunch of searching around for a nice replacement font, and this trumped several other like Literata, Merriwether, Vollkorn, etc * Add Noto Sans, and Open Dyslexic as font options * They can be selected in the settings screen * Add font size options (Small, Medium, Large, Extra Large) * Adjustable in settings * Swap out uses of reader font in headings and replaced with slightly larger Ubuntu font * Replaced PixelArial14 font as it was difficult to track down, replace with Space Grotesk * Remove auto formatting on generated font files * Massively speeds up formatting step now that there is a lot more CPP font source * Include fonts with their licenses in the repo ## Additional Context Line compression setting will follow | Font | Small | Medium | Large | X Large | | --- | --- | --- | --- | --- | | Aleo | ![IMG_5704](https://github.com/user-attachments/assets/7acb054f-ddef-4080-b3c8-590cfaf13115) | ![IMG_5705](https://github.com/user-attachments/assets/d4819036-5c89-486e-92c3-86094fa4d89a) | ![IMG_5706](https://github.com/user-attachments/assets/35caf622-d126-4396-9c3e-f927eba1e1f4) | ![IMG_5707](https://github.com/user-attachments/assets/af32370a-6244-400f-bea9-5c27db040b5b) | | Noto Sans | ![IMG_5708](https://github.com/user-attachments/assets/1f9264a5-c069-4e22-9099-a082bfcaabc5) | ![IMG_5709](https://github.com/user-attachments/assets/ef6b07fe-8d87-403a-b152-05f50b69b78e) | ![IMG_5710](https://github.com/user-attachments/assets/112a5d20-262c-4dc0-b67d-980b237e4607) | ![IMG_5711](https://github.com/user-attachments/assets/d25e0e1d-2ace-450d-96dd-618e4efd4805) | | Open Dyslexic | ![IMG_5712](https://github.com/user-attachments/assets/ead64690-f261-4fae-a4a2-0becd1162e2d) | ![IMG_5713](https://github.com/user-attachments/assets/59d60f7d-5142-4591-96b0-c04e0a4c6436) | ![IMG_5714](https://github.com/user-attachments/assets/bb6652cd-1790-46a3-93ea-2b8f70d0d36d) | ![IMG_5715](https://github.com/user-attachments/assets/496e7eb4-c81a-4232-83e9-9ba9148fdea4) |
2025-12-30 18:21:47 +10:00
};