compress fonts using zlib

- smaller
- better
- ugly big-endian workaround no longer necessary
This commit is contained in:
tildearrow 2024-04-07 16:08:38 -05:00
parent c894ababc0
commit 44973de675
19 changed files with 168771 additions and 65734 deletions

View file

@ -788,6 +788,7 @@ src/gui/font_unifont.cpp
src/gui/font_icon.cpp src/gui/font_icon.cpp
src/gui/font_furicon.cpp src/gui/font_furicon.cpp
src/gui/fonts.cpp src/gui/fonts.cpp
src/gui/fontzlib.cpp
src/gui/image_icon.cpp src/gui/image_icon.cpp
src/gui/image_talogo.cpp src/gui/image_talogo.cpp

View file

@ -2282,22 +2282,10 @@ ImFont* ImFontAtlas::AddFontFromMemoryTTF(void* ttf_data, int ttf_size, float si
ImFont* ImFontAtlas::AddFontFromMemoryCompressedTTF(const void* compressed_ttf_data, int compressed_ttf_size, float size_pixels, const ImFontConfig* font_cfg_template, const ImWchar* glyph_ranges) ImFont* ImFontAtlas::AddFontFromMemoryCompressedTTF(const void* compressed_ttf_data, int compressed_ttf_size, float size_pixels, const ImFontConfig* font_cfg_template, const ImWchar* glyph_ranges)
{ {
// workaround for big-endian
#ifdef TA_BIG_ENDIAN
unsigned char* beData=(unsigned char*)IM_ALLOC(compressed_ttf_size);
for (int i=0; i<compressed_ttf_size; i++) {
beData[i]=((unsigned char*)compressed_ttf_data)[i^3];
}
compressed_ttf_data=beData;
#endif
const unsigned int buf_decompressed_size = stb_decompress_length((const unsigned char*)compressed_ttf_data); const unsigned int buf_decompressed_size = stb_decompress_length((const unsigned char*)compressed_ttf_data);
unsigned char* buf_decompressed_data = (unsigned char*)IM_ALLOC(buf_decompressed_size); unsigned char* buf_decompressed_data = (unsigned char*)IM_ALLOC(buf_decompressed_size);
stb_decompress(buf_decompressed_data, (const unsigned char*)compressed_ttf_data, (unsigned int)compressed_ttf_size); stb_decompress(buf_decompressed_data, (const unsigned char*)compressed_ttf_data, (unsigned int)compressed_ttf_size);
#ifdef TA_BIG_ENDIAN
IM_FREE(beData);
#endif
ImFontConfig font_cfg = font_cfg_template ? *font_cfg_template : ImFontConfig(); ImFontConfig font_cfg = font_cfg_template ? *font_cfg_template : ImFontConfig();
IM_ASSERT(font_cfg.FontData == NULL); IM_ASSERT(font_cfg.FontData == NULL);
font_cfg.FontDataOwnedByAtlas = true; font_cfg.FontDataOwnedByAtlas = true;

View file

@ -1,7 +1,27 @@
#!/bin/bash #!/bin/bash
mkdir -p compressed # "file" "symbol" "license" "output"
for i in *.ttf *.otf; do fonts=(
echo "$i" "Exo-Medium.ttf" "font_exo" "papers/exo-license.txt" "font_exo.cpp"
cat "$i" | zlib-flate -compress=9 > compressed/"$i".zl "FontAwesome.otf" "iconFont" "Font Awesome by Dave Gandy - http://fontawesome.io" "font_icon.cpp"
"IBMPlexMono-Regular.ttf" "font_plexMono" "papers/ibm-plex-license.txt" "font_plexMono.cpp"
"IBMPlexSans-Regular.ttf" "font_plexSans" "papers/ibm-plex-license.txt" "font_plexSans.cpp"
"LiberationSans-Regular.ttf" "font_liberationSans" "papers/liberation-license.txt" "font_liberationSans.cpp"
"mononoki-Regular.ttf" "font_mononoki" "papers/mononoki-license.txt" "font_mononoki.cpp"
"ProggyClean.ttf" "font_proggyClean" "papers/proggy-license.txt" "font_proggyClean.cpp"
"PTMono.ttf" "font_ptMono" "papers/pt-mono-license.txt" "font_ptMono.cpp"
"unifont_jp-15.1.05.otf" "font_unifont" "papers/unifont-license.txt" "font_unifont.cpp"
)
fontCount=${#fonts[@]}
for i in `seq 0 4 $((fontCount-1))`; do
fontPath="${fonts[i]}"
fontSym="${fonts[i+1]}"
fontLicense="${fonts[i+2]}"
fontOut="../../src/gui/${fonts[i+3]}"
echo "$fontPath"
echo "// $fontLicense" > "$fontOut"
echo "// File: '$fontPath' ($(stat -c %s $fontPath) bytes)" >> "$fontOut"
echo "#include \"fonts.h\"" >> "$fontOut"
cat "$fontPath" | zlib-flate -compress=9 | xxd -i -n "$fontSym""_compressed_data" | sed -r "s/^ +//g;s/, /,/g;s/ = /=/g;s/unsigned/const unsigned/g;s/compressed_data_len/compressed_size/" >> "$fontOut"
done done

View file

@ -1,11 +1,5 @@
#!/bin/bash #!/bin/bash
# run after exporting to .ttf # run after exporting to .ttf
# make sure you're running this on a Linux or Unix-like system with GCC
if [ ! -e binary_to_compressed_c ]; then
g++ -o binary_to_compressed_c ../extern/imgui_patched/misc/fonts/binary_to_compressed_c.cpp || exit 1
fi
echo "#include \"fonts.h\"" > ../src/gui/font_furicon.cpp echo "#include \"fonts.h\"" > ../src/gui/font_furicon.cpp
./binary_to_compressed_c icons.ttf furIcons | sed "s/static //" >> ../src/gui/font_furicon.cpp cat icons.ttf | zlib-flate -compress=9 | xxd -i -n "furIcons_compressed_data" | sed -r "s/^ +//g;s/, /,/g;s/ = /=/g;s/unsigned/const unsigned/g;s/compressed_data_len/compressed_size/" >> ../src/gui/font_furicon.cpp
#xxd -i -n "furIcons" icons.ttf | sed -r "s/^ +//g;s/, /,/g;s/ = /=/g;s/unsigned/const unsigned/g" > ../src/gui/font_furIcons.cpp

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,209 +1,501 @@
// papers/proggy-license.txt
// File: 'ProggyClean.ttf' (41208 bytes) // File: 'ProggyClean.ttf' (41208 bytes)
// Exported using binary_to_compressed_c.cpp
#include "fonts.h" #include "fonts.h"
const unsigned char font_proggyClean_compressed_data[]={
const unsigned int font_proggyClean_compressed_size = 9583; 0x78,0xda,0xdd,0x3d,0x69,0x90,0x54,0xc7,0x79,0x5f,0xbf,0xf7,
const unsigned int font_proggyClean_compressed_data[9584/4] = 0x66,0x67,0x17,0x96,0x65,0xd9,0x83,0xfb,0xd8,0x85,0x5d,0xee,
{ 0x63,0x1f,0x03,0xcb,0x0c,0x87,0x58,0x40,0x08,0xac,0x28,0x12,
0x0000bc57, 0x00000000, 0xf8a00000, 0x00000400, 0x00010037, 0x000c0000, 0x00030080, 0x2f534f40, 0x74eb8832, 0x01000090, 0x2c158248, 0x616d634e, 0x11,0x18,0xe1,0x58,0x91,0xb4,0xc0,0x72,0xd8,0x5c,0x81,0x05,
0x23120270, 0x03000075, 0x241382a0, 0x74766352, 0x82178220, 0xfc042102, 0x02380482, 0x66796c67, 0x5689af12, 0x04070000, 0x80920000, 0x64616568, 0x81,0xec,0xc8,0x4f,0x87,0x65,0x19,0xc7,0x32,0x56,0xaa,0x88,
0xd36691d7, 0xcc201b82, 0x36210382, 0x27108268, 0xc3014208, 0x04010000, 0x243b0f82, 0x78746d68, 0x807e008a, 0x98010000, 0x06020000, 0x61636f6c, 0xa2,0x38,0x2a,0x47,0x71,0x51,0x89,0x8a,0x60,0x25,0xe5,0x52,
0xd8b0738c, 0x82050000, 0x0402291e, 0x7078616d, 0xda00ae01, 0x28201f82, 0x202c1082, 0x656d616e, 0x96bb5925, 0x84990000, 0x9e2c1382, 0x74736f70, 0x28,0xc7,0xae,0x4a,0x95,0x13,0x85,0x24,0x8a,0xa3,0xd8,0x92,
0xef83aca6, 0x249b0000, 0xd22c3382, 0x70657270, 0x12010269, 0xf4040000, 0x08202f82, 0x012ecb84, 0x553c0000, 0x0f5fd5e9, 0x0300f53c, 0x00830008, 0xad,0xd2,0x0f,0x47,0x95,0x1f,0x2e,0x19,0x2b,0x58,0x49,0x64,
0x7767b722, 0x002b3f82, 0xa692bd00, 0xfe0000d7, 0x83800380, 0x21f1826f, 0x00850002, 0x41820120, 0x40fec026, 0x80030000, 0x05821083, 0x07830120, 0x97,0x7e,0x68,0x67,0xd2,0xef,0xee,0xee,0xd7,0xdd,0xaf,0xbb,
0x0221038a, 0x24118200, 0x90000101, 0x82798200, 0x00022617, 0x00400008, 0x2009820a, 0x82098276, 0x82002006, 0x9001213b, 0x0223c883, 0x828a02bc, 0x67,0xd6,0x3f,0x32,0xbb,0x33,0xef,0x98,0x99,0xf7,0xfa,0x3b,
0x858f2010, 0xc5012507, 0x00023200, 0x04210083, 0x91058309, 0x6c412b03, 0x40007374, 0xac200000, 0x00830008, 0x01000523, 0x834d8380, 0x80032103, 0xfa,0xbb,0xfb,0x1b,0x40,0x00,0xd0,0x0a,0x1e,0xd8,0x30,0x74,
0x012101bf, 0x23b88280, 0x00800000, 0x0b830382, 0x07820120, 0x83800021, 0x88012001, 0x84002009, 0x2005870f, 0x870d8301, 0x2023901b, 0x83199501, 0xcf,0xee,0x55,0xab,0x9f,0xfe,0xf9,0xe8,0x25,0x00,0xb4,0x13,
0x82002015, 0x84802000, 0x84238267, 0x88002027, 0x8561882d, 0x21058211, 0x13880000, 0x01800022, 0x05850d85, 0x0f828020, 0x03208384, 0x03200582, 0x9f,0xbd,0xfb,0xc0,0xf1,0xe1,0x53,0x56,0xc7,0x82,0xb3,0x00,
0x47901b84, 0x1b850020, 0x1f821d82, 0x3f831d88, 0x3f410383, 0x84058405, 0x210982cd, 0x09830000, 0x03207789, 0xf38a1384, 0x01203782, 0x13872384, 0xf6,0xd7,0xf1,0xb9,0x7b,0x0f,0x9c,0x1b,0xed,0x81,0xe0,0xe1,
0x0b88c983, 0x0d898f84, 0x00202982, 0x23900383, 0x87008021, 0x83df8301, 0x86118d03, 0x863f880d, 0x8f35880f, 0x2160820f, 0x04830300, 0x1c220382, 0x7c,0x84,0x5f,0xac,0xc3,0xc7,0x2e,0x1c,0xea,0xf8,0xe6,0x17,
0x05820100, 0x4c000022, 0x09831182, 0x04001c24, 0x11823000, 0x0800082e, 0x00000200, 0xff007f00, 0xffffac20, 0x00220982, 0x09848100, 0xdf216682, 0xf7,0x02,0x14,0x1d,0x80,0x67,0xbd,0x23,0x23,0xc3,0x07,0x7f,
0x843586d5, 0x06012116, 0x04400684, 0xa58120d7, 0x00b127d8, 0x01b88d01, 0x2d8685ff, 0xc100c621, 0xf4be0801, 0x9e011c01, 0x88021402, 0x1403fc02, 0xfc,0xd5,0x43,0x3f,0xc4,0xef,0xbd,0x86,0x9f,0x83,0x47,0xf0,
0x9c035803, 0x1404de03, 0x50043204, 0xa2046204, 0x66051605, 0x1206bc05, 0xd6067406, 0x7e073807, 0x4e08ec07, 0x96086c08, 0x1009d008, 0x88094a09, 0x89,0xe6,0xad,0xe8,0x7b,0xf8,0xbb,0xf8,0x7d,0xe8,0x3b,0x72,
0x800a160a, 0x560b040b, 0x2e0cc80b, 0xea0c820c, 0xa40d5e0d, 0x500eea0d, 0x280f960e, 0x1210b00f, 0xe0107410, 0xb6115211, 0x6e120412, 0x4c13c412, 0x7c,0xf4,0xfc,0x45,0x78,0xd4,0xc3,0xc7,0xcf,0xe1,0xaf,0x37,
0xf613ac13, 0xae145814, 0x4015ea14, 0xa6158015, 0x1216b815, 0xc6167e16, 0x8e173417, 0x5618e017, 0xee18ba18, 0x96193619, 0x481ad419, 0xf01a9c1a, 0x1d,0x3b,0x79,0x60,0xf8,0xf7,0xcf,0xbc,0xfc,0x16,0x40,0xc1,
0xc81b5c1b, 0x4c1c041c, 0xea1c961c, 0x921d2a1d, 0x401ed21d, 0xe01e8e1e, 0x761f241f, 0xa61fa61f, 0x01821020, 0x8a202e34, 0xc820b220, 0x74211421, 0xbf,0x9c,0x73,0x7c,0xf8,0xfc,0x29,0x74,0x0d,0xde,0xc6,0xef,
0xee219821, 0x86226222, 0x01820c23, 0x83238021, 0x23983c01, 0x24d823b0, 0x244a2400, 0x24902468, 0x250625ae, 0x25822560, 0x26f825f8, 0x82aa2658, 0x2f,0xc6,0x27,0x7a,0x4e,0x0c,0x1f,0x1f,0xe9,0xff,0xc4,0xdf,
0xd8be0801, 0x9a274027, 0x68280a28, 0x0e29a828, 0xb8292029, 0x362af829, 0x602a602a, 0x2a2b022b, 0xac2b5e2b, 0x202ce62b, 0x9a2c342c, 0x5c2d282d, 0x5e,0x06,0xf8,0xa3,0x27,0xf1,0xb9,0x17,0x4e,0x9d,0x3c,0x33,
0xaa2d782d, 0x262ee82d, 0x262fa62e, 0xf42fb62f, 0xc8305e30, 0xb4313e31, 0x9e321e32, 0x82331e33, 0x5c34ee33, 0x3a35ce34, 0xd4358635, 0x72362636, 0x7a,0xe5,0xea,0x13,0xbf,0x00,0xf8,0xe3,0x3e,0xfc,0x9d,0x1f,
0x7637e636, 0x3a38d837, 0x1239a638, 0xae397439, 0x9a3a2e3a, 0x7c3b063b, 0x3a3ce83b, 0x223d963c, 0xec3d863d, 0xc63e563e, 0x9a3f2a3f, 0x6a401240, 0x9c,0x3a,0x3d,0x72,0xea,0xa8,0x85,0x3a,0xf0,0x78,0x3e,0xc0,
0x3641d040, 0x0842a241, 0x7a424042, 0xf042b842, 0xcc436243, 0x8a442a44, 0x5845ee44, 0xe245b645, 0xb4465446, 0x7a471447, 0x5448da47, 0x4049c648, 0x9f,0x6f,0x06,0x1f,0x16,0xfc,0xdc,0xf8,0xf1,0x9f,0xbd,0xf9,
0x15462400, 0x034d0808, 0x0b000700, 0x13000f00, 0x1b001700, 0x23001f00, 0x2b002700, 0x33002f00, 0x3b003700, 0x43003f00, 0x4b004700, 0x53004f00, 0xe0,0xe4,0x8d,0xbf,0x04,0xbb,0x39,0x18,0xed,0xdf,0x1c,0x7e,
0x5b005700, 0x63005f00, 0x6b006700, 0x73006f00, 0x7b007700, 0x83007f00, 0x8b008700, 0x00008f00, 0x15333511, 0x20039631, 0x20178205, 0xd3038221, 0xf8,0x49,0x7f,0xfb,0xdd,0x67,0xaf,0xfc,0x18,0xa0,0xea,0xd9,
0x20739707, 0x25008580, 0x028080fc, 0x05be8080, 0x04204a85, 0x05ce0685, 0x0107002a, 0x02000080, 0x00000400, 0x250d8b41, 0x33350100, 0x03920715, 0x9e,0x7f,0x3f,0x0c,0xb1,0x15,0x42,0xe3,0x7f,0xc7,0xf9,0xbb,
0x13820320, 0x858d0120, 0x0e8d0320, 0xff260d83, 0x00808000, 0x54820106, 0x04800223, 0x845b8c80, 0x41332059, 0x078b068f, 0x82000121, 0x82fe2039, 0xea,0x10,0x3e,0xe5,0x05,0x6f,0x78,0xc1,0x95,0xc8,0x87,0xe5,
0x84802003, 0x83042004, 0x23598a0e, 0x00180000, 0x03210082, 0x42ab9080, 0x73942137, 0x2013bb41, 0x8f978205, 0x2027a39b, 0x20b68801, 0x84b286fd, 0x9f,0x41,0x08,0x2e,0x41,0x5f,0x74,0xdc,0x0c,0x43,0x30,0x01,
0x91c88407, 0x41032011, 0x11a51130, 0x15000027, 0x80ff8000, 0x11af4103, 0x841b0341, 0x8bd983fd, 0x9be99bc9, 0x8343831b, 0x21f1821f, 0xb58300ff, 0xef,0x9d,0x83,0xf0,0x26,0xf8,0x5b,0xe8,0x92,0x0f,0x88,0xf5,
0x0f84e889, 0xf78a0484, 0x8000ff22, 0x0020eeb3, 0x14200082, 0x2130ef41, 0xeb431300, 0x4133200a, 0xd7410ecb, 0x9a07200b, 0x2027871b, 0x21238221, 0x1d,0xeb,0x22,0x3e,0xfc,0x4a,0xb8,0x45,0xff,0x00,0xab,0xc3,
0xe7828080, 0xe784fd20, 0xe8848020, 0xfe808022, 0x08880d85, 0xba41fd20, 0x82248205, 0x85eab02a, 0x008022e7, 0x2cd74200, 0x44010021, 0xd34406eb, 0xdb,0x38,0x2d,0xc0,0x7d,0x6c,0x39,0x36,0x7a,0x06,0x5f,0x0b,
0x44312013, 0xcf8b0eef, 0x0d422f8b, 0x82332007, 0x0001212f, 0x8023cf82, 0x83000180, 0x820583de, 0x830682d4, 0x820020d4, 0x82dc850a, 0x20e282e9, 0x7a,0xae,0x86,0x17,0x2a,0x00,0xf2,0xc2,0x91,0xd8,0x5e,0xfd,
0xb2ff85fe, 0x010327e9, 0x02000380, 0x0f440400, 0x0c634407, 0x68825982, 0x85048021, 0x260a825d, 0x010b0000, 0x4400ff00, 0x2746103f, 0x08d74209, 0x7f,0xc8,0x0b,0x40,0xf1,0xe1,0x0a,0xf6,0x91,0xbf,0x1f,0xfc,
0x4d440720, 0x0eaf4406, 0xc3441d20, 0x23078406, 0xff800002, 0x04845b83, 0x8d05b241, 0x1781436f, 0x6b8c87a5, 0x1521878e, 0x06474505, 0x01210783, 0xa5,0x7b,0xf4,0x1f,0xf2,0xc2,0x4f,0x03,0xb9,0xf5,0x32,0xdf,
0x84688c00, 0x8904828e, 0x441e8cf7, 0x0b270cff, 0x80008000, 0x45030003, 0xfb430fab, 0x080f4107, 0x410bf942, 0xd34307e5, 0x070d4207, 0x80800123, 0xa2,0xdf,0x09,0xef,0x10,0xdf,0x27,0x7a,0x02,0x20,0xc1,0xf7,
0x205d85fe, 0x849183fe, 0x20128404, 0x82809702, 0x00002217, 0x41839a09, 0x6b4408cf, 0x0733440f, 0x3b460720, 0x82798707, 0x97802052, 0x0000296f, 0xa3,0x31,0xb1,0x57,0x05,0x7a,0x0c,0x18,0x07,0x3e,0x04,0xc0,
0xff800004, 0x01800100, 0x0021ef89, 0x0a914625, 0x410a4d41, 0x00250ed4, 0x00050000, 0x056d4280, 0x210a7b46, 0x21481300, 0x46ed8512, 0x00210bd1, 0x19,0x6b,0xf4,0x9e,0x4d,0xc3,0x04,0xc9,0x35,0x82,0xf7,0x03,
0x89718202, 0x21738877, 0x2b850001, 0x00220582, 0x87450a00, 0x0ddb4606, 0x41079b42, 0x9d420c09, 0x0b09420b, 0x8d820720, 0x9742fc84, 0x42098909, 0x9a,0xc4,0xef,0xf8,0x58,0x25,0xee,0x6b,0xc7,0xe3,0x8d,0xef,
0x00241e0f, 0x00800014, 0x0b47da82, 0x0833442a, 0x49078d41, 0x2f450f13, 0x42278f17, 0x01200751, 0x22063742, 0x44808001, 0x20450519, 0x88068906, 0x17,0xdc,0x05,0xb1,0x30,0x09,0x8e,0xfd,0x7b,0x22,0x60,0xa1,
0x83fe2019, 0x4203202a, 0x1a941a58, 0x00820020, 0xe7a40e20, 0x420ce146, 0x854307e9, 0x0fcb4713, 0xff20a182, 0xfe209b82, 0x0c867f8b, 0x0021aea4, 0xe0,0x60,0x24,0xef,0xfb,0x5e,0xce,0x5f,0xc8,0xa7,0xe1,0x63,
0x219fa40f, 0x7d41003b, 0x07194214, 0xbf440520, 0x071d4206, 0x6941a590, 0x80802309, 0x028900ff, 0xa9a4b685, 0xc5808021, 0x449b82ab, 0x152007eb, 0x76,0xc4,0x95,0x77,0xe1,0x33,0x28,0x38,0x76,0x60,0x20,0xe0,
0x42134d46, 0x61440a15, 0x051e4208, 0x222b0442, 0x47001100, 0xfd412913, 0x17194714, 0x410f5b41, 0x02220773, 0x09428080, 0x21a98208, 0xd4420001, 0xfb,0xe6,0x80,0x93,0x3f,0x07,0xb5,0x9e,0xab,0xb5,0x5a,0xf0,
0x481c840d, 0x00232bc9, 0x42120000, 0xe74c261b, 0x149d4405, 0x07209d87, 0x410db944, 0x14421c81, 0x42fd2005, 0x80410bd2, 0x203d8531, 0x06874100, 0x99,0xc7,0x82,0x3d,0x7c,0x8b,0xff,0x78,0x93,0xe4,0x65,0xd4,
0x48256f4a, 0xcb420c95, 0x13934113, 0x44075d44, 0x044c0855, 0x00ff2105, 0xfe228185, 0x45448000, 0x22c5b508, 0x410c0000, 0x7b412087, 0x1bb74514, 0x04,0xff,0x9f,0x1f,0x8f,0xa9,0x7d,0xec,0xaf,0x00,0x7d,0xf9,
0x32429c85, 0x0a574805, 0x21208943, 0x8ba01300, 0x440dfb4e, 0x77431437, 0x245b4113, 0x200fb145, 0x41108ffe, 0x80203562, 0x00200082, 0x46362b42, 0x3a,0xaa,0x7d,0x3e,0x3a,0x7c,0xb5,0x01,0x7f,0x1f,0xa0,0xd9,
0x1742178d, 0x4527830f, 0x0f830b2f, 0x4a138146, 0x802409a1, 0xfe8000ff, 0x94419982, 0x09294320, 0x04000022, 0x49050f4f, 0xcb470a63, 0x48032008, 0xe8,0x05,0xab,0xcb,0x7a,0xda,0xfa,0xc8,0xee,0xb2,0xf7,0xd9,
0x2b48067b, 0x85022008, 0x82638338, 0x00002209, 0x05af4806, 0x900e9f49, 0x84c5873f, 0x214285bd, 0x064900ff, 0x0c894607, 0x00000023, 0x4903820a, 0x5f,0xb3,0x7f,0xe2,0x74,0x39,0xab,0x9d,0x5d,0xce,0x7e,0xe7,
0x714319f3, 0x0749410c, 0x8a07a145, 0x02152507, 0xfe808000, 0x74490386, 0x8080211b, 0x0c276f82, 0x00018000, 0x48028003, 0x2b2315db, 0x43002f00, 0xc5,0xc2,0xd4,0xc2,0xa1,0xc2,0x77,0x9a,0x3a,0x9a,0x46,0x9b,
0x6f82142f, 0x44011521, 0x93510da7, 0x20e68508, 0x06494d80, 0x8e838020, 0x06821286, 0x124bff20, 0x25f3830c, 0x03800080, 0xe74a0380, 0x207b8715, 0x7e,0x54,0x2c,0x17,0x1f,0x2d,0xbe,0xd7,0x7c,0x77,0xf3,0xb1,
0x876b861d, 0x4a152007, 0x07870775, 0xf6876086, 0x8417674a, 0x0a0021f2, 0x431c9743, 0x8d421485, 0x200b830b, 0x06474d03, 0x71828020, 0x04510120, 0xe6,0xcb,0xcd,0xaf,0xb7,0xb4,0xb7,0xdc,0xd9,0xf2,0xf4,0x84,
0x42da8606, 0x1f831882, 0x001a0022, 0xff4d0082, 0x0b0f532c, 0x0d449b94, 0x4e312007, 0x074f12e7, 0x0bf3490b, 0xbb412120, 0x413f820a, 0xef490857, 0xa9,0x13,0xbc,0x89,0xce,0xc4,0xbd,0x13,0x6f,0xb4,0xae,0x6c,
0x80002313, 0xe2830001, 0x6441fc20, 0x8b802006, 0x00012108, 0xfd201582, 0x492c9b48, 0x802014ff, 0x51084347, 0x0f4327f3, 0x17bf4a14, 0x201b7944, 0x7d,0xbc,0xf5,0xe6,0xa4,0x07,0x26,0x7d,0x63,0xd2,0xcd,0xb6,
0x06964201, 0x134ffe20, 0x20d6830b, 0x25d78280, 0xfd800002, 0x05888000, 0x9318dc41, 0x21d282d4, 0xdb481800, 0x0dff542a, 0x45107743, 0xe14813f5, 0x5d,0x6d,0x97,0x27,0x2f,0x9e,0xfc,0x72,0x7b,0x47,0xfb,0x68,
0x0f034113, 0x83135d45, 0x47b28437, 0xe4510e73, 0x21f58e06, 0x2b8400fd, 0x1041fcac, 0x08db4b0b, 0x421fdb41, 0xdf4b18df, 0x011d210a, 0x420af350, 0xfb,0x3b,0x53,0xee,0x9d,0xf2,0x4a,0x87,0xd3,0x71,0xa2,0xe3,
0x6e8308af, 0xac85cb86, 0x1e461082, 0x82b7a407, 0x411420a3, 0xa34130ab, 0x178f4124, 0x41139741, 0x86410d93, 0x82118511, 0x057243d8, 0x8941d9a4, 0xef,0x3b,0xef,0xea,0xbc,0xda,0xf9,0xab,0xae,0x7d,0x5d,0xd7,
0x3093480c, 0x4a13474f, 0xfb5016a9, 0x07ad4108, 0x4a0f9d42, 0xfe200fad, 0x4708aa41, 0x83482dba, 0x288f4d06, 0xb398c3bb, 0x44267b41, 0xb34439d7, 0xba,0x6e,0x76,0x0f,0x75,0x7b,0xdd,0x57,0xba,0xaf,0x4f,0xed,
0x0755410f, 0x200ebb45, 0x0f5f4215, 0x20191343, 0x06df5301, 0xf04c0220, 0x2ba64d07, 0x82050841, 0x430020ce, 0xa78f3627, 0x5213ff42, 0x2f970bc1, 0x98,0xfa,0xe8,0xd4,0x57,0xa7,0xad,0x99,0xf6,0xcc,0xb4,0x77,
0x4305ab55, 0xa084111b, 0x450bac45, 0x5f4238b8, 0x010c2106, 0x0220ed82, 0x441bb344, 0x875010af, 0x0737480f, 0x490c5747, 0x0c840c03, 0x4c204b42, 0xa6,0xef,0x9d,0xfe,0xed,0xe9,0xb7,0x66,0x0c,0xce,0xb8,0x3c,
0x8ba905d7, 0x8b948793, 0x510c0c51, 0xfb4b24b9, 0x1b174107, 0x5709d74c, 0xd1410ca5, 0x079d480f, 0x201ff541, 0x06804780, 0x7d520120, 0x80002205, 0xe3,0x8d,0x99,0x3b,0x67,0x7e,0x6d,0xe6,0xfb,0xb3,0xee,0x9f,
0x20a983fe, 0x47bb83fe, 0x1b8409b4, 0x81580220, 0x4e00202c, 0x4f41282f, 0x0eab4f17, 0x57471520, 0x0e0f4808, 0x8221e041, 0x3e1b4a8b, 0x4407175d, 0x75,0x63,0xb6,0x33,0xfb,0xae,0xd9,0x97,0x67,0xdf,0x9c,0xb3,
0x1b4b071f, 0x4a0f8b07, 0x174a0703, 0x0ba5411b, 0x430fb141, 0x0120057b, 0xfc20dd82, 0x4a056047, 0xf4850c0c, 0x01221982, 0x02828000, 0x1a5d088b, 0x74,0xce,0xb3,0x73,0x7e,0x30,0x77,0x68,0xee,0x33,0x73,0xdf,
0x20094108, 0x8c0e3941, 0x4900200e, 0x7744434f, 0x200b870b, 0x0e4b5a33, 0x2b41f78b, 0x8b138307, 0x0b9f450b, 0x2406f741, 0xfd808001, 0x09475a00, 0x99,0xd7,0x37,0xef,0xdc,0xbc,0x2b,0xf3,0xae,0xf4,0xb4,0xe3,
0x84000121, 0x5980200e, 0x85450e5d, 0x832c8206, 0x4106831e, 0x00213814, 0x28b34810, 0x410c2f4b, 0x5f4a13d7, 0x0b2b4113, 0x6e43a883, 0x11174b05, 0xbf,0x95,0x3d,0x17,0x7b,0xfe,0xba,0xe7,0x46,0x6f,0x57,0xef,
0x4b066a45, 0xcc470541, 0x5000202b, 0xcb472f4b, 0x44b59f0f, 0xc5430b5b, 0x0d654907, 0x21065544, 0xd6828080, 0xfe201982, 0x8230ec4a, 0x120025c2, 0x68,0xef,0x73,0xbd,0xb7,0xe6,0xef,0x9f,0xff,0xd4,0x82,0x56,
0x80ff8000, 0x4128d74d, 0x3320408b, 0x410a9f50, 0xdb822793, 0x822bd454, 0x61134b2e, 0x410b214a, 0xad4117c9, 0x0001211f, 0x4206854f, 0x4b430596, 0xfc,0xe7,0x05,0x7f,0xcf,0x2d,0x78,0x79,0xc1,0x5b,0x7d,0xd0,
0x06bb5530, 0x2025cf46, 0x0ddd5747, 0x500ea349, 0x0f840fa7, 0x5213c153, 0x634e08d1, 0x0bbe4809, 0x59316e4d, 0x5b50053f, 0x203f6323, 0x5117eb46, 0x77,0x67,0xdf,0x91,0xbe,0x4b,0x7d,0xd7,0xfa,0x9b,0xfa,0x1f,
0x94450a63, 0x246e410a, 0x63410020, 0x0bdb5f2f, 0x4233ab44, 0x39480757, 0x112d4a07, 0x7241118f, 0x000e2132, 0x9f286f41, 0x0f8762c3, 0x33350723, 0xea,0x7f,0xbc,0xff,0xc3,0xfe,0x0f,0x17,0xee,0x5b,0xf8,0x12,
0x094e6415, 0x2010925f, 0x067252fe, 0xd0438020, 0x63a68225, 0x11203a4f, 0x480e6360, 0x5748131f, 0x079b521f, 0x200e2f43, 0x864b8315, 0x113348e7, 0xfe,0x7b,0x6b,0xd1,0xd0,0xa2,0xe7,0x17,0x4f,0x58,0x7c,0x64,
0x85084e48, 0x06855008, 0x5880fd21, 0x7c420925, 0x0c414824, 0x37470c86, 0x1b8b422b, 0x5b0a8755, 0x23410c21, 0x0b83420b, 0x5a082047, 0xf482067f, 0xf1,0x9f,0x2f,0x69,0x5b,0xd2,0xb3,0xe4,0xfa,0x92,0x0f,0x97,
0xa80b4c47, 0x0c0021cf, 0x20207b42, 0x0fb74100, 0x420b8744, 0xeb43076f, 0x0f6f420b, 0x4261fe20, 0x439aa00c, 0x215034e3, 0x0ff9570f, 0x4b1f2d5d, 0x0e,0x2e,0x7d,0x68,0xe9,0x43,0xcb,0xac,0x65,0x4b,0x97,0x3d,
0x2d5d0c6f, 0x09634d0b, 0x1f51b8a0, 0x620f200c, 0xaf681e87, 0x24f94d07, 0x4e0f4945, 0xfe200c05, 0x22139742, 0x57048080, 0x23950c20, 0x97601585, 0xb0,0xec,0xea,0xb2,0x9f,0x2e,0xef,0x59,0xbe,0x66,0xf9,0xf3,
0x4813201f, 0xad620523, 0x200f8f0f, 0x9e638f15, 0x00002181, 0x41342341, 0x0f930f0b, 0x210b4b62, 0x978f0001, 0xfe200f84, 0x8425c863, 0x2704822b, 0x2b,0x16,0xaf,0xb8,0x7f,0xc5,0xf9,0x15,0x2f,0xad,0x78,0x77,
0x80000a00, 0x00038001, 0x610e9768, 0x834514bb, 0x0bc3430f, 0x2107e357, 0x80848080, 0x4400fe21, 0x2e410983, 0x00002a1a, 0x00000700, 0x800380ff, 0xe5,0xc2,0x95,0x57,0x56,0x2d,0x5c,0xf5,0xca,0xaa,0x0f,0x06,
0x0fdf5800, 0x59150021, 0xd142163d, 0x0c02410c, 0x01020025, 0x65800300, 0x00240853, 0x1d333501, 0x15220382, 0x35420001, 0x44002008, 0x376406d7, 0x1e,0x18,0xb8,0xe1,0xde,0xe6,0x7e,0x6b,0xf5,0xdc,0xd5,0x2f,
0x096f6b19, 0x480bc142, 0x8f4908a7, 0x211f8b1f, 0x9e830001, 0x0584fe20, 0x4180fd21, 0x11850910, 0x8d198259, 0x000021d4, 0x5a08275d, 0x275d1983, 0x94,0xe6,0x96,0x1e,0x2f,0xdd,0x5a,0x73,0xff,0x9a,0xef,0xaf,
0x06d9420e, 0x9f08b36a, 0x0f7d47b5, 0x8d8a2f8b, 0x4c0e0b57, 0xe7410e17, 0x42d18c1a, 0xb351087a, 0x1ac36505, 0x4b4a2f20, 0x0b9f450d, 0x430beb53, 0x5d,0xbf,0xf6,0xa9,0xb5,0x6f,0x0c,0x2e,0x1c,0x3c,0x3d,0xf8,
0xa7881015, 0xa5826a83, 0x80200f82, 0x86185a65, 0x4100208e, 0x176c3367, 0x0fe7650b, 0x4a17ad4b, 0x0f4217ed, 0x112e4206, 0x41113a42, 0xf7423169, 0xd3,0x75,0xe7,0xd6,0xbd,0x55,0x5e,0x5f,0xbe,0x52,0xe9,0xa8,
0x0cb34737, 0x560f8b46, 0xa75407e5, 0x5f01200f, 0x31590c48, 0x80802106, 0x42268841, 0x0020091e, 0x4207ef64, 0x69461df7, 0x138d4114, 0x820f5145, 0x8c,0x56,0xae,0xad,0x5f,0xb9,0xfe,0xf9,0x0d,0x4d,0x1b,0x3e,
0x53802090, 0xff200529, 0xb944b183, 0x417e8505, 0x00202561, 0x15210082, 0x42378200, 0x9b431cc3, 0x004f220d, 0x0dd54253, 0x4213f149, 0x7d41133b, 0xbb,0xe1,0xdd,0x8d,0xeb,0x37,0x5e,0xde,0x34,0x7f,0xd3,0x53,
0x42c9870b, 0x802010f9, 0x420b2c42, 0x8f441138, 0x267c4408, 0x600cb743, 0x8f4109d3, 0x05ab701d, 0x83440020, 0x3521223f, 0x0b794733, 0xfb62fe20, 0x9b,0xde,0xbb,0x6d,0xef,0x6d,0xaf,0x6e,0x5e,0xba,0xf9,0xf9,
0x4afd2010, 0xaf410ae7, 0x25ce8525, 0x01080000, 0x7b6b0000, 0x0973710b, 0x82010021, 0x49038375, 0x33420767, 0x052c4212, 0x58464b85, 0x41fe2005, 0xa1,0x8e,0xa1,0x4f,0x0d,0xbd,0xbe,0x65,0x70,0xcb,0x8b,0x5b,
0x50440c27, 0x000c2209, 0x1cb36b80, 0x9b06df44, 0x0f93566f, 0x52830220, 0xfe216e8d, 0x200f8200, 0x0fb86704, 0xb057238d, 0x050b5305, 0x7217eb47, 0x9b,0xb7,0x0e,0x6d,0x7d,0x64,0xeb,0xf5,0xad,0xef,0x6f,0xdb,
0xbd410b6b, 0x0f214610, 0x871f9956, 0x1e91567e, 0x2029b741, 0x20008200, 0x18b7410a, 0x27002322, 0x41095543, 0x0f8f0fb3, 0x41000121, 0x889d111c, 0xbf,0xed,0xb5,0xdb,0x97,0xde,0x7e,0xf1,0xf6,0x5b,0xdb,0xf7,
0x14207b82, 0x00200382, 0x73188761, 0x475013a7, 0x6e33200c, 0x234e0ea3, 0x9b138313, 0x08e54d17, 0x9711094e, 0x2ee74311, 0x4908875e, 0xd75d1f1f, 0x6d,0x7f,0x65,0xfb,0x7f,0xde,0xb1,0xe7,0x8e,0x6f,0xed,0xe8,
0x19ab5238, 0xa2084d48, 0x63a7a9b3, 0x55450b83, 0x0fd74213, 0x440d814c, 0x4f481673, 0x05714323, 0x13000022, 0x412e1f46, 0xdf493459, 0x21c7550f, 0xda,0xf1,0xc8,0x8e,0xb7,0x77,0xee,0xd9,0xf9,0xea,0xc7,0x86,
0x8408215f, 0x201d49cb, 0xb1103043, 0x0f0d65d7, 0x452b8d41, 0x594b0f8d, 0x0b004605, 0xb215eb46, 0x000a24d7, 0x47000080, 0x002118cf, 0x06436413, 0x7c,0x99,0x1e,0x69,0x05,0x1b,0x8a,0x30,0x11,0x26,0x43,0x27,
0x420bd750, 0x2b500743, 0x076a470c, 0x4105c050, 0xd942053f, 0x0d00211a, 0x5f44779c, 0x0ce94805, 0x51558186, 0x14a54c0b, 0x49082b41, 0x0a4b0888, 0x4c,0x83,0x59,0x30,0x0f,0x16,0xc0,0x22,0x58,0x06,0xab,0xa0,
0x8080261f, 0x0d000000, 0x20048201, 0x1deb6a03, 0x420cb372, 0x07201783, 0x4306854d, 0x8b830c59, 0x59093c74, 0x0020250f, 0x67070f4a, 0x2341160b, 0x04,0xeb,0x60,0x03,0x6c,0x86,0x6d,0xb0,0x03,0x7e,0x03,0xee,
0x00372105, 0x431c515d, 0x554e17ef, 0x0e5d6b05, 0x41115442, 0xb74a1ac1, 0x2243420a, 0x5b4f878f, 0x7507200f, 0x384b086f, 0x09d45409, 0x0020869a, 0x81,0xdd,0x70,0x1f,0x7c,0x12,0x1e,0x84,0x03,0x70,0x18,0x3e,
0x12200082, 0xab460382, 0x10075329, 0x54138346, 0xaf540fbf, 0x1ea75413, 0x9a0c9e54, 0x0f6b44c1, 0x41000021, 0x47412a4f, 0x07374907, 0x5310bf76, 0x0d,0x27,0xe1,0x0c,0x3c,0x0c,0x9f,0xc1,0x33,0xf0,0x09,0xf8,
0xff2009b4, 0x9a09a64c, 0x8200208d, 0x34c34500, 0x970fe141, 0x1fd74b0f, 0x440a3850, 0x206411f0, 0x27934609, 0x470c5d41, 0x555c2947, 0x1787540f, 0x02,0x7c,0x09,0xbe,0x02,0x30,0x65,0x6d,0xa9,0xdb,0x15,0x3c,
0x6e0f234e, 0x7d540a1b, 0x1d736b08, 0x0026a088, 0x80000e00, 0x9b5200ff, 0x08ef4318, 0x450bff77, 0x1d4d0b83, 0x081f7006, 0xcb691b86, 0x4b022008, 0x0b,0xf8,0xd9,0x3b,0x4e,0x5b,0xd1,0x3d,0xbd,0xf0,0xf1,0x91,
0xc34b0b33, 0x1d0d4a0c, 0x8025a188, 0x0b000000, 0x52a38201, 0xbf7d0873, 0x0c234511, 0x8f0f894a, 0x4101200f, 0x0c880c9d, 0x2b418ea1, 0x06c74128, 0xe7,0x59,0x75,0xbf,0x86,0x0f,0xc7,0x1b,0x8f,0x07,0x14,0x7d,
0x66181341, 0x7b4c0bb9, 0x0c06630b, 0xfe200c87, 0x9ba10882, 0x27091765, 0x01000008, 0x02800380, 0x48113f4e, 0x29430cf5, 0x09a75a0b, 0x31618020, 0x59,0x6c,0x61,0xd1,0xc6,0xd0,0x02,0x10,0x86,0xa2,0xc8,0x79,
0x6d802009, 0x61840e33, 0x8208bf51, 0x0c637d61, 0x7f092379, 0x4f470f4b, 0x1797510c, 0x46076157, 0xf5500fdf, 0x0f616910, 0x1171fe20, 0x82802006, 0xda,0xf8,0x89,0xe8,0x8b,0xd8,0xd9,0xeb,0xd6,0x00,0x5f,0xbb,
0x08696908, 0x41127a4c, 0x3f4a15f3, 0x01042607, 0x0200ff00, 0x1cf77700, 0xff204185, 0x00235b8d, 0x43100000, 0x3b22243f, 0x3b4d3f00, 0x0b937709, 0x09,0xf9,0x4a,0x1f,0x8f,0x9c,0xba,0x76,0x70,0xe5,0x52,0x84,
0xad42f18f, 0x0b1f420f, 0x51084b43, 0x8020104a, 0xb557ff83, 0x052b7f2a, 0x0280ff22, 0x250beb78, 0x00170013, 0xbf6d2500, 0x07db760e, 0x410e2b7f, 0x3f,0x72,0x8b,0xf0,0x77,0xbc,0xaa,0x17,0xbf,0x38,0xc0,0x0c,
0x00230e4f, 0x49030000, 0x0582055b, 0x07000326, 0x00000b00, 0x580bcd46, 0x00200cdd, 0x57078749, 0x8749160f, 0x0f994f0a, 0x41134761, 0x01200b31, 0x15,0xa6,0x87,0x7a,0xdf,0xd1,0xe7,0x1b,0xee,0x3d,0x45,0xbc,
0xeb796883, 0x0b41500b, 0x0e90b38e, 0x202e7b51, 0x05d95801, 0x41080570, 0x1d530fc9, 0x0b937a0f, 0xaf8eb387, 0xf743b98f, 0x07c74227, 0x80000523, 0x62,0xf2,0x39,0x94,0x0c,0x7b,0x2c,0x1a,0xee,0x98,0xe4,0x8c,
0x0fcb4503, 0x430ca37b, 0x7782077f, 0x8d0a9947, 0x08af4666, 0xeb798020, 0x6459881e, 0xc3740bbf, 0x0feb6f0b, 0x20072748, 0x052b6102, 0x435e0584, 0x6d,0x4c,0x2e,0xe8,0x06,0xaf,0xe6,0xd9,0xa0,0x85,0x83,0x00,
0x7d088308, 0x03200afd, 0x92109e41, 0x28aa8210, 0x80001500, 0x80030000, 0x0fdb5805, 0x209f4018, 0xa7418d87, 0x0aa3440f, 0x20314961, 0x073a52ff, 0xfa,0x82,0x06,0xa4,0x79,0x58,0x28,0x84,0x10,0xd7,0x80,0x06,
0x6108505d, 0x43181051, 0x00223457, 0xe7820500, 0x50028021, 0x81410d33, 0x063d7108, 0xdb41af84, 0x4d888205, 0x00201198, 0x463d835f, 0x152106d7, 0x2b,0x38,0xae,0x01,0x0d,0x77,0x0d,0x8c,0xc0,0xf5,0x49,0xdd,
0x0a355a33, 0x6917614e, 0x75411f4d, 0x184b8b07, 0x1809c344, 0x21091640, 0x0b828000, 0x42808021, 0x26790519, 0x86058605, 0x2428422d, 0x22123b42, 0xa5,0x4d,0x6f,0xe8,0x24,0xe6,0x66,0x89,0x81,0x82,0xdc,0x2f,
0x42000080, 0xf587513b, 0x7813677b, 0xaf4d139f, 0x00ff210c, 0x5e0a1d57, 0x3b421546, 0x01032736, 0x02000380, 0x41180480, 0x2f420f07, 0x0c624807, 0x4a,0xde,0x2b,0x11,0x73,0xdc,0xc3,0xb6,0x8a,0x37,0x06,0x1e,
0x00000025, 0x18000103, 0x83153741, 0x430120c3, 0x042106b2, 0x088d4d00, 0x2f830620, 0x1810434a, 0x18140345, 0x8507fb41, 0x5ee582ea, 0x0023116c, 0x41,0xc7,0x6a,0xcc,0x97,0x55,0xea,0xf4,0x98,0x6f,0xd6,0xe8,
0x8d000600, 0x053b56af, 0xa6554fa2, 0x0d704608, 0x40180d20, 0x47181a43, 0xd37b07ff, 0x0b79500c, 0x420fd745, 0x47450bd9, 0x8471830a, 0x095a777e, 0x83,0x1a,0xc2,0xe9,0xe9,0xc2,0x89,0x24,0xb2,0xcd,0x65,0xce,
0x84137542, 0x82002013, 0x2f401800, 0x0007213b, 0x4405e349, 0x0d550ff3, 0x16254c0c, 0x820ffe4a, 0x0400218a, 0x89066f41, 0x106b414f, 0xc84d0120, 0x95,0x72,0x64,0x57,0x3c,0xf7,0x30,0xd1,0xf0,0xa6,0x0a,0xc1,
0x80802206, 0x0c9a4b03, 0x00100025, 0x68000200, 0x9d8c2473, 0x44134344, 0xf36a0f33, 0x4678860f, 0x1b440a25, 0x41988c0a, 0x80201879, 0x43079b5e, 0xab,0x17,0x1c,0x8c,0x05,0x07,0x31,0x70,0x63,0x01,0x36,0x22,
0x4a18080b, 0x0341190b, 0x1259530c, 0x43251552, 0x908205c8, 0x0cac4018, 0x86000421, 0x0e504aa2, 0x0020b891, 0xfb450082, 0x51132014, 0x8f5205f3, 0xb0,0x0d,0x20,0xb5,0x91,0xe7,0x3b,0x01,0x89,0x3c,0xa0,0x64,
0x35052108, 0x8505cb59, 0x0f6d4f70, 0x82150021, 0x29af5047, 0x4f004b24, 0x75795300, 0x1b595709, 0x460b6742, 0xbf4b0f0d, 0x5743870b, 0xcb6d1461, 0x4c,0x24,0x53,0xd2,0x59,0x0f,0x30,0x11,0x41,0x2d,0x2b,0x3f,
0x08f64505, 0x4e05ab6c, 0x334126c3, 0x0bcb6b0d, 0x1811034d, 0x4111ef4b, 0x814f1ce5, 0x20af8227, 0x07fd7b80, 0x41188e84, 0xef410f33, 0x80802429, 0x52,0xbc,0x24,0x7c,0x5d,0x24,0xb6,0xc4,0x73,0x0e,0x22,0xb6,
0x410d0000, 0xa34205ab, 0x76b7881c, 0xff500b89, 0x0741430f, 0x20086f4a, 0x209d8200, 0x234c18fd, 0x05d4670a, 0x4509af51, 0x9642078d, 0x189e831d, 0x16,0x10,0xfc,0x99,0x3e,0x58,0x29,0xc3,0x1b,0xb7,0xca,0x38,
0x7c1cc74b, 0xcd4c07b9, 0x0e7c440f, 0x8b7b0320, 0x21108210, 0xc76c8080, 0x03002106, 0x6b23bf41, 0xc549060b, 0x7946180b, 0x0ff7530f, 0x17ad4618, 0xa8,0x7b,0xb1,0x32,0x93,0x1c,0x23,0x82,0x8c,0xa0,0xf4,0x5f,
0x200ecd45, 0x208c83fd, 0x5e0488fe, 0x032009c6, 0x420d044e, 0x0d8f0d7f, 0x00820020, 0x18001021, 0x6d273b45, 0xfd4c0c93, 0xcf451813, 0x0fe5450f, 0x94,0xc6,0x11,0x58,0xd2,0xbe,0x81,0x9a,0x83,0x8f,0x92,0x64,
0x5a47c382, 0x820a8b0a, 0x282b4998, 0x410a8b5b, 0x4b232583, 0x54004f00, 0x978f0ce3, 0x500f1944, 0xa95f1709, 0x0280220b, 0x05ba7080, 0xa1530682, 0x4e,0x97,0xd2,0xf9,0x5b,0x25,0xf8,0x38,0xa2,0x6a,0x35,0x50,
0x06324c13, 0x91412582, 0x05536e2c, 0x63431020, 0x0f434706, 0x8c11374c, 0x176143d7, 0x4d0f454c, 0xd3680bed, 0x0bee4d17, 0x212b9a41, 0x0f530a00, 0x3a,0x92,0x31,0xb4,0x48,0xc6,0x90,0xd0,0xb3,0x20,0x90,0x98,
0x140d531c, 0x43139143, 0x95610e8d, 0x0f094415, 0x4205fb56, 0x1b4205cf, 0x17015225, 0x5e0c477f, 0xaf6e0aeb, 0x0ff36218, 0x04849a84, 0x0a454218, 0x45,0x4a,0x52,0x46,0x1b,0x4b,0x78,0x2f,0xc7,0x27,0x59,0xe0,
0x9c430420, 0x23c6822b, 0x04000102, 0x45091b4b, 0xf05f0955, 0x82802007, 0x421c2023, 0x5218282b, 0x7b53173f, 0x0fe7480c, 0x74173b7f, 0x47751317, 0x51,0xc5,0xf7,0x82,0x7e,0x06,0xab,0x11,0x36,0x19,0xa2,0x06,
0x634d1807, 0x0f6f430f, 0x24086547, 0xfc808002, 0x0b3c7f80, 0x10840120, 0x188d1282, 0x20096b43, 0x0fc24403, 0x00260faf, 0x0180000b, 0x3f500280, 0x6e,0x9d,0x17,0x72,0x1b,0x31,0xce,0x40,0x3a,0xf0,0x35,0x35,
0x18002019, 0x450b4941, 0xf3530fb9, 0x18002010, 0x8208a551, 0x06234d56, 0xcb58a39b, 0xc3421805, 0x1313461e, 0x0f855018, 0xd34b0120, 0x6cfe2008, 0xa9,0xd1,0xc0,0x0a,0x1c,0xdb,0xf8,0xbe,0xc9,0x3d,0x09,0xca,
0x574f0885, 0x09204114, 0x07000029, 0x00008000, 0x44028002, 0x01420f57, 0x10c95c10, 0x11184c18, 0x80221185, 0x7f421e00, 0x00732240, 0x09cd4977, 0x01,0xf6,0x45,0x43,0x39,0xcc,0xe7,0x09,0x0a,0x13,0xb2,0xad,
0x6d0b2b42, 0x4f180f8f, 0x8f5a0bcb, 0x9b0f830f, 0x0fb9411f, 0x230b5756, 0x00fd8080, 0x82060745, 0x000121d5, 0x8e0fb277, 0x4a8d4211, 0x24061c53, 0x45,0xcb,0xcd,0xf4,0x25,0x87,0x1f,0x22,0x99,0x01,0x26,0x32,
0x04000007, 0x12275280, 0x430c954c, 0x80201545, 0x200f764f, 0x20008200, 0x20ce8308, 0x09534f02, 0x660edf64, 0x73731771, 0xe7411807, 0x20a2820c, 0x43,0x24,0x37,0x64,0x72,0x90,0x27,0x37,0x50,0xc4,0x37,0x89,
0x13b64404, 0x8f5d6682, 0x1d6b4508, 0x0cff4d18, 0x3348c58f, 0x0fc34c07, 0x31558b84, 0x8398820f, 0x17514712, 0x240b0e46, 0x80000a00, 0x093b4502, 0x64,0x18,0xf3,0x28,0x81,0xe8,0x31,0x32,0xc3,0x48,0x36,0xb6,
0x420f9759, 0xa54c0bf1, 0x0f2b470c, 0x410d314b, 0x2584170c, 0x73b30020, 0xb55fe782, 0x204d8410, 0x08e043fe, 0x4f147e41, 0x022008ab, 0x4b055159, 0x29,0xc1,0x49,0x69,0x38,0x52,0xc6,0xb3,0xb3,0x90,0xa5,0x7e,
0x2950068f, 0x00022208, 0x48511880, 0x82002009, 0x00112300, 0x634dff00, 0x24415f27, 0x180f6d43, 0x4d0b5d45, 0x4d5f05ef, 0x01802317, 0x56188000, 0xa4,0xc5,0xaa,0xe4,0x6d,0xab,0x9e,0xba,0x80,0xc3,0xe3,0x51,
0xa7840807, 0xc6450220, 0x21ca8229, 0x4b781a00, 0x3359182c, 0x0cf3470f, 0x180bef46, 0x420b0354, 0xff470b07, 0x4515200a, 0x9758239b, 0x4a80200c, 0xa3,0x03,0x17,0xfb,0xf1,0xa8,0xc8,0x67,0x91,0x37,0xca,0x14,
0xd2410a26, 0x05fb4a08, 0x4b05e241, 0x03200dc9, 0x92290941, 0x00002829, 0x00010900, 0x5b020001, 0x23201363, 0x460d776a, 0xef530fdb, 0x209a890c, 0xd3,0xc1,0x78,0x93,0x7f,0x4f,0x47,0x14,0x37,0x66,0xac,0x2e,
0x13fc4302, 0x00008024, 0xc4820104, 0x08820220, 0x20086b5b, 0x18518700, 0x8408d349, 0x0da449a1, 0x00080024, 0x7b690280, 0x4c438b1a, 0x01220f63, 0x21,0xe3,0x72,0xb8,0x22,0x41,0xa5,0x3e,0x13,0xc0,0x14,0x0d,
0x4c878000, 0x5c149c53, 0xfb430868, 0x2f56181e, 0x0ccf7b1b, 0x0f075618, 0x2008e347, 0x14144104, 0x00207f83, 0x00207b82, 0x201adf47, 0x16c35a13, 0x9d,0xc8,0xa5,0xbe,0xaa,0xb5,0x4e,0xcc,0xc4,0x84,0x13,0x42,
0x540fdf47, 0x802006c8, 0x5418f185, 0x29430995, 0x00002419, 0x58001600, 0x5720316f, 0x4d051542, 0x4b7b1b03, 0x138f4707, 0xb747b787, 0x4aab8213, 0x1d,0x48,0x31,0x75,0x88,0x6d,0x5b,0x8b,0x79,0x3b,0xb4,0xe6,
0x058305fc, 0x20115759, 0x82128401, 0x0a0b44e8, 0x46800121, 0xe64210d0, 0x82129312, 0x4bffdffe, 0x3b41171b, 0x9b27870f, 0x808022ff, 0x085c68fe, 0x28,0x57,0x3a,0x91,0x5a,0x8d,0x38,0x2f,0xa5,0x00,0x35,0x0b,
0x41800021, 0x01410b20, 0x001a213a, 0x47480082, 0x11374e12, 0x56130b4c, 0xdf4b0c65, 0x0b0f590b, 0x0f574c18, 0x830feb4b, 0x075f480f, 0x480b4755, 0x4d,0x09,0x10,0x03,0x31,0x45,0x03,0x06,0xca,0x2a,0xe1,0xf1,
0x40490b73, 0x80012206, 0x09d74280, 0x80fe8022, 0x80210e86, 0x056643ff, 0x10820020, 0x420b2646, 0x0b58391a, 0xd74c1808, 0x078b4e22, 0x2007f55f, 0xb2,0x8a,0x27,0x85,0x42,0xb6,0x89,0x99,0x9b,0x91,0x2f,0x06,
0x4b491807, 0x83802017, 0x65aa82a7, 0x3152099e, 0x068b7616, 0x9b431220, 0x09bb742c, 0x500e376c, 0x8342179b, 0x0a4d5d0f, 0x8020a883, 0x180cd349, 0x50,0x84,0xf1,0x56,0x39,0x0c,0x5c,0xdc,0xcb,0xe4,0x36,0xab,
0x2016bb4b, 0x14476004, 0x84136c43, 0x08cf7813, 0x4f4c0520, 0x156f420f, 0x20085f42, 0x6fd3be03, 0xd4d30803, 0xa7411420, 0x004b222c, 0x0d3b614f, 0xbe,0x55,0xf9,0x03,0xdf,0x59,0x4f,0x6e,0xe7,0x4a,0x6d,0x2d,
0x3f702120, 0x1393410a, 0x8f132745, 0x47421827, 0x41e08209, 0xb05e2bb9, 0x18b7410c, 0x18082647, 0x4107a748, 0xeb8826bf, 0x0ca76018, 0x733ecb41, 0xdc,0xb2,0x12,0xbb,0x0a,0x0d,0x41,0x71,0xc4,0xef,0x46,0xbc,
0xd0410d83, 0x43ebaf2a, 0x0420067f, 0x721dab4c, 0x472005bb, 0x4105d341, 0x334844cb, 0x20dba408, 0x47d6ac00, 0x034e3aef, 0x0f8f421b, 0x930f134d, 0xe2,0x6a,0x78,0xd8,0xa4,0xbc,0x14,0x69,0xa0,0xd4,0x42,0xf5,
0x3521231f, 0xb7421533, 0x42f5ad0a, 0x1e961eaa, 0x17000022, 0x4c367b50, 0x7d491001, 0x0bf5520f, 0x4c18fda7, 0xb8460c55, 0x83fe2005, 0x00fe25b9, 0x49,0x52,0xd5,0xe5,0x15,0x27,0xf4,0x87,0x09,0xfb,0x26,0xd1,
0x80000180, 0x9e751085, 0x261b5c12, 0x82110341, 0x001123fb, 0x4518fe80, 0xf38c2753, 0x6d134979, 0x295107a7, 0xaf5f180f, 0x0fe3660c, 0x180b6079, 0xe5,0x36,0x6d,0xa9,0x26,0x96,0x4b,0x35,0xfe,0x6e,0x53,0x68,
0x2007bd5f, 0x9aab9103, 0x2f4d1811, 0x05002109, 0x44254746, 0x1d200787, 0x450bab75, 0x4f180f57, 0x4f181361, 0x3b831795, 0xeb4b0120, 0x0b734805, 0xaf,0x30,0xb6,0x51,0xe6,0xfb,0x1c,0x4b,0x10,0x8f,0x94,0xbe,
0x84078f48, 0x2e1b47bc, 0x00203383, 0xaf065f45, 0x831520d7, 0x130f51a7, 0x1797bf97, 0x2b47d783, 0x18fe2005, 0x4a18a44f, 0xa64d086d, 0x1ab0410d, 0x58,0x82,0x53,0x3f,0xe6,0x2d,0xb6,0xf9,0xa8,0x19,0xe7,0x32,
0x6205a258, 0xdbab069f, 0x4f06f778, 0xa963081d, 0x133b670a, 0x8323d141, 0x13195b23, 0x530f5e70, 0xe5ad0824, 0x58001421, 0x1f472b4b, 0x47bf410c, 0x12,0x9a,0xd8,0xfa,0xd6,0x6f,0x80,0x96,0x18,0x35,0x96,0x8c,
0x82000121, 0x83fe20cb, 0x07424404, 0x68068243, 0xd7ad0d3d, 0x00010d26, 0x80020000, 0x4a1c6f43, 0x23681081, 0x10a14f13, 0x8a070e57, 0x430a848f, 0x8e,0xad,0xbe,0xf8,0xb3,0xf1,0x67,0xf4,0xe6,0x4b,0x40,0x11,
0x7372243e, 0x4397a205, 0xb56c1021, 0x43978f0f, 0x64180505, 0x99aa0ff2, 0x0e000022, 0x20223341, 0x094b4f37, 0x074a3320, 0x2639410a, 0xfe208e84, 0x79,0x3c,0x64,0x2c,0xbe,0x3d,0x64,0x6c,0x60,0xda,0xb6,0x0a,
0x8b0e0048, 0x508020a3, 0x9e4308fe, 0x073f4115, 0xe3480420, 0x0c9b5f1b, 0x7c137743, 0x9a95185b, 0x6122b148, 0x979b08df, 0x0fe36c18, 0x48109358, 0xa2,0xcd,0x02,0x98,0x3b,0x05,0x30,0x32,0x38,0xe8,0x26,0xdc,
0x23441375, 0x0ffd5c0b, 0x180fc746, 0x2011d157, 0x07e95702, 0x58180120, 0x18770ac3, 0x51032008, 0x7d4118e3, 0x80802315, 0x3b4c1900, 0xbb5a1830, 0x34,0xff,0x29,0x05,0x39,0xb8,0xa7,0x98,0x77,0x73,0xb5,0x77,
0x0ceb6109, 0x5b0b3d42, 0x4f181369, 0x4f180b8d, 0x4f180f75, 0x355a1b81, 0x200d820d, 0x18e483fd, 0x4528854f, 0x89420846, 0x1321411f, 0x44086b60, 0x12,0x19,0xc9,0x6a,0x6a,0xa9,0x86,0x0e,0xe2,0x24,0x33,0x8d,
0x07421d77, 0x107d4405, 0x4113fd41, 0x5a181bf1, 0x4f180db3, 0x8021128f, 0x20f68280, 0x44a882fe, 0x334d249a, 0x052f6109, 0x1520c3a7, 0xef4eb783, 0xe3,0x1a,0x7e,0x3c,0x4c,0x3a,0x93,0x5c,0x8e,0x4d,0x27,0x3a,
0x4ec39b1b, 0xc4c90ee7, 0x20060b4d, 0x256f4905, 0x4d0cf761, 0xcf9b1f13, 0xa213d74e, 0x0e1145d4, 0x50135b42, 0xcb4e398f, 0x20d79f27, 0x08865d80, 0xee,0xa5,0xaf,0x33,0x07,0x89,0xad,0x90,0xd8,0x2f,0x4c,0xc3,
0x186d5018, 0xa90f7142, 0x067342d7, 0x3f450420, 0x65002021, 0xe3560771, 0x24d38f23, 0x15333531, 0x0eb94d01, 0x451c9f41, 0x384322fb, 0x00092108, 0x53,0xe4,0x4e,0xe8,0x32,0x7a,0x66,0x6e,0x22,0x57,0x87,0xaa,
0x19af6b18, 0x6e0c6f5a, 0xbd770bfb, 0x22bb7718, 0x20090f57, 0x25e74204, 0x4207275a, 0xdb5408ef, 0x1769450f, 0x1b1b5518, 0x210b1f57, 0x5e4c8001, 0xe2,0x86,0x3b,0x1f,0x64,0x12,0x45,0x24,0x79,0x90,0x97,0x98,
0x55012006, 0x802107f1, 0x0a306a80, 0x45808021, 0x0d850b88, 0x31744f18, 0x1808ec54, 0x2009575b, 0x45ffa505, 0x1b420c73, 0x180f9f0f, 0x4a0cf748, 0x03,0xa9,0x4f,0x1c,0x87,0x3b,0xac,0xc0,0x31,0x4e,0x5e,0x6d,
0x501805b2, 0x00210f40, 0x4d118f80, 0xd6823359, 0x072b5118, 0x314ad7aa, 0x8fc79f08, 0x45d78b1f, 0xfe20058f, 0x23325118, 0x7b54d9b5, 0x9fc38f46, 0x5d,0x9b,0x76,0xba,0xb6,0xbf,0x9f,0xc4,0xb1,0x3a,0x15,0xc6,
0x10bb410f, 0x41077b42, 0xc1410faf, 0x27cf441d, 0x46051b4f, 0x04200683, 0x2121d344, 0x8f530043, 0x8fcf9f0e, 0x21df8c1f, 0x50188000, 0x5d180e52, 0xef,0x1a,0x68,0x5d,0x6a,0x9e,0xf2,0x6d,0x7a,0x06,0xea,0x31,
0xfd201710, 0x4405c341, 0xd68528e3, 0x20071f6b, 0x1b734305, 0x6b080957, 0x7d422b1f, 0x67002006, 0x7f8317b1, 0x2024cb48, 0x08676e00, 0x8749a39b, 0xa8,0x8f,0xbe,0x89,0x6d,0xef,0xa9,0xd8,0xf6,0x3c,0x58,0x58,
0x18132006, 0x410a6370, 0x8f490b47, 0x7e1f8f13, 0x551805c3, 0x4c180915, 0xfe200e2f, 0x244d5d18, 0x270bcf44, 0xff000019, 0x04800380, 0x5f253342, 0x4f,0x9f,0x67,0x49,0xa4,0xfc,0xea,0x25,0x8e,0x9e,0xba,0x76,
0xff520df7, 0x13274c18, 0x5542dd93, 0x0776181b, 0xf94a1808, 0x084a4c0c, 0x4308ea5b, 0xde831150, 0x7900fd21, 0x00492c1e, 0x060f4510, 0x17410020, 0x33,0x8b,0xcd,0x74,0x36,0x20,0xfe,0x2c,0xa6,0x49,0x96,0x0c,
0x0ce74526, 0x6206b341, 0x1f561083, 0x9d6c181b, 0x08a0500e, 0x112e4118, 0x60000421, 0xbf901202, 0x4408e241, 0xc7ab0513, 0xb40f0950, 0x055943c7, 0xe1,0x6b,0x42,0x2b,0x7d,0x37,0x4b,0xdb,0x26,0xd1,0xb0,0x54,
0x4f18ff20, 0xc9ae1cad, 0x32b34f18, 0x7a180120, 0x3d520a05, 0x53d1b40a, 0x80200813, 0x1b815018, 0x832bf86f, 0x67731847, 0x297f4308, 0x6418d54e, 0x33,0x71,0x19,0xbe,0x66,0x48,0xad,0xd5,0x2a,0xc8,0x23,0xcb,
0x734213f7, 0x056b4b27, 0xdba5fe20, 0x1828aa4e, 0x2031a370, 0x06cb6101, 0x2040ad41, 0x07365300, 0x2558d985, 0x83fe200c, 0x0380211c, 0x542c4743, 0x39,0xf4,0x52,0xf6,0x71,0xea,0x81,0x41,0x38,0x66,0x7b,0xbc,
0x052006b7, 0x6021df45, 0x897b0707, 0x18d3c010, 0x20090e70, 0x1d5843ff, 0x540a0e44, 0x002126c5, 0x322f7416, 0x636a5720, 0x0f317409, 0x610fe159, 0xe5,0x9a,0x68,0x0e,0xf4,0x2a,0xca,0x84,0xec,0x9c,0x88,0xe3,
0x294617e7, 0x08555213, 0x2006a75d, 0x6cec84fd, 0xfb5907be, 0x3a317405, 0x83808021, 0x180f20ea, 0x4626434a, 0x531818e3, 0xdb59172d, 0x0cbb460c, 0x7b,0x16,0xd4,0xe1,0x25,0x18,0xcf,0x93,0x5e,0x4d,0x4f,0x4d,
0x2013d859, 0x18b94502, 0x8f46188d, 0x77521842, 0x0a184e38, 0x9585fd20, 0x6a180684, 0xc64507e9, 0x51cbb230, 0xd3440cf3, 0x17ff6a0f, 0x450f5b42, 0x36,0x6f,0x44,0x22,0x8a,0x3f,0x5f,0x2c,0x30,0x0a,0x48,0xb4,
0x276407c1, 0x4853180a, 0x21ccb010, 0xcf580013, 0x0c15442d, 0x410a1144, 0x1144359d, 0x5cfe2006, 0xa1410a43, 0x2bb64519, 0x2f5b7618, 0xb512b745, 0xfa,0xb1,0x21,0x4b,0x06,0x67,0x86,0x56,0xc5,0x9c,0x58,0x04,
0x0cfd6fd1, 0x42089f59, 0xb8450c70, 0x0000232d, 0x50180900, 0xb9491ae3, 0x0fc37610, 0x01210f83, 0x0f3b4100, 0xa01b2742, 0x0ccd426f, 0x6e8f6f94, 0xca,0x84,0x25,0x15,0x7d,0x89,0xc0,0xaf,0x51,0x1f,0x4b,0x51,
0x9c808021, 0xc7511870, 0x17c74b08, 0x9b147542, 0x44fe2079, 0xd5480c7e, 0x95ef861d, 0x101b597b, 0xf5417594, 0x9f471808, 0x86868d0e, 0x3733491c, 0x75,0x2c,0x54,0x30,0x44,0x6d,0x28,0x7a,0xfe,0xba,0x8c,0xf2,
0x690f4d6d, 0x43440b83, 0x1ba94c0b, 0x660cd16b, 0x802008ae, 0x74126448, 0xcb4f38a3, 0x2cb74b0b, 0x47137755, 0xe3971777, 0x1b5d0120, 0x057a4108, 0x25,0x45,0xbf,0xc6,0xa3,0xe4,0x5e,0xac,0x9e,0xe3,0xf4,0x51,
0x6e08664d, 0x17421478, 0x11af4208, 0x850c3f42, 0x08234f0c, 0x4321eb4a, 0xf3451095, 0x0f394e0f, 0x4310eb45, 0xc09707b1, 0x54431782, 0xaec08d1d, 0xa4,0xb4,0x63,0x89,0xa9,0xe7,0xb7,0x2b,0xfa,0x8b,0x45,0xc9,
0x0f434dbb, 0x9f0c0b45, 0x0a3b4dbb, 0x4618bdc7, 0x536032eb, 0x17354213, 0x4d134169, 0xc7a30c2f, 0x4e254342, 0x174332cf, 0x43cdae17, 0x6b4706e4, 0x53,0x60,0xff,0xe6,0xa5,0xcd,0xb2,0xf3,0xaa,0x4e,0xdb,0x70,
0x0e16430d, 0x530b5542, 0x2f7c26bb, 0x13075f31, 0x43175342, 0x60181317, 0x6550114e, 0x28624710, 0x58070021, 0x59181683, 0x2d540cf5, 0x05d5660c, 0x0a,0x91,0x0f,0x70,0x99,0xfc,0x80,0xab,0x61,0x17,0xf6,0x0a,
0x20090c7b, 0x0e157e02, 0x8000ff2b, 0x14000080, 0x80ff8000, 0x27137e03, 0x336a4b20, 0x0f817107, 0x13876e18, 0x730f2f7e, 0x2f450b75, 0x6d02200b, 0xf6,0xa9,0x3c,0x49,0x60,0x04,0x22,0x89,0x55,0x88,0xff,0xc9,
0x6d66094c, 0x4b802009, 0x15820a02, 0x2f45fe20, 0x5e032006, 0x00202fd9, 0x450af741, 0xeb412e0f, 0x0ff3411f, 0x420a8b65, 0xf7410eae, 0x1c664810, 0x9d,0x24,0xc9,0x59,0xa7,0x91,0xd8,0x00,0x7b,0x8a,0x97,0x3b,
0x540e1145, 0xbfa509f3, 0x42302f58, 0x80200c35, 0xcb066c47, 0x4b1120c1, 0x41492abb, 0x34854110, 0xa7097b72, 0x251545c7, 0x4b2c7f56, 0xc5b40bab, 0x29,0x09,0xf6,0xd9,0x9c,0x0a,0x6b,0x3f,0x93,0xfb,0x5e,0x92,
0x940cd54e, 0x2e6151c8, 0x09f35f18, 0x4b420420, 0x09677121, 0x8f24f357, 0x1b5418e1, 0x08915a1f, 0x3143d894, 0x22541805, 0x1b9b4b0e, 0x8c0d3443, 0x40,0x8a,0x25,0x2e,0x02,0x72,0x9b,0x64,0x57,0xd2,0x2c,0x4b,
0x1400240d, 0x18ff8000, 0x582e6387, 0xf99b2b3b, 0x8807a550, 0x17a14790, 0x2184fd20, 0x5758fe20, 0x2354882c, 0x15000080, 0x5e056751, 0x334c2c2f, 0xbc,0x31,0xb7,0xac,0xda,0x95,0xf1,0x21,0xcd,0x23,0xa9,0xd8,
0x97c58f0c, 0x1fd7410f, 0x0d4d4018, 0x4114dc41, 0x04470ed6, 0x0dd54128, 0x00820020, 0x02011523, 0x22008700, 0x86480024, 0x0001240a, 0x8682001a, 0x28,0x28,0x99,0x6e,0x42,0xd3,0xc4,0x8b,0xf3,0x49,0xb6,0x8e,
0x0002240b, 0x866c000e, 0x8a03200b, 0x8a042017, 0x0005220b, 0x22218614, 0x84060000, 0x86012017, 0x8212200f, 0x250b8519, 0x000d0001, 0x0b850031, 0x3e,0xd1,0x8a,0x25,0x74,0x1a,0x5a,0xbc,0x05,0x56,0xa7,0x67,
0x07000224, 0x0b862600, 0x11000324, 0x0b862d00, 0x238a0420, 0x0a000524, 0x17863e00, 0x17840620, 0x01000324, 0x57820904, 0x0b85a783, 0x0b85a785, 0x63,0x09,0x63,0xa4,0x82,0xd7,0x13,0x23,0xbe,0x8e,0xaf,0x79,
0x0b85a785, 0x22000325, 0x85007a00, 0x85a7850b, 0x85a7850b, 0x22a7850b, 0x82300032, 0x00342201, 0x0805862f, 0x35003131, 0x54207962, 0x74736972, 0x66,0xbe,0x8b,0x09,0x2d,0x4a,0x44,0x7c,0x42,0x95,0x26,0xfa,
0x47206e61, 0x6d6d6972, 0x65527265, 0x616c7567, 0x58545472, 0x6f725020, 0x43796767, 0x6e61656c, 0x30325454, 0x822f3430, 0x35313502, 0x79006200, 0x46,0xd6,0xf8,0xdb,0xc4,0xae,0x92,0xf4,0x97,0x53,0xcb,0x5c,
0x54002000, 0x69007200, 0x74007300, 0x6e006100, 0x47200f82, 0x6d240f84, 0x65006d00, 0x52200982, 0x67240582, 0x6c007500, 0x72201d82, 0x54222b82, 0xfe,0x47,0x50,0xd6,0x61,0x9f,0x31,0xe3,0x66,0xe3,0x14,0x73,
0x23825800, 0x19825020, 0x67006f22, 0x79220182, 0x1b824300, 0x3b846520, 0x1f825420, 0x41000021, 0x1422099b, 0x0b410000, 0x87088206, 0x01012102, 0x90,0x04,0x5e,0x44,0xfb,0x98,0xa4,0xf9,0xa2,0x4f,0xab,0x30,
0x78080982, 0x01020101, 0x01040103, 0x01060105, 0x01080107, 0x010a0109, 0x010c010b, 0x010e010d, 0x0110010f, 0x01120111, 0x01140113, 0x01160115, 0x7f,0xa2,0xa2,0x3f,0x72,0xeb,0x67,0x44,0x7a,0x8e,0x67,0xb4,
0x01180117, 0x011a0119, 0x011c011b, 0x011e011d, 0x0020011f, 0x00040003, 0x00060005, 0x00080007, 0x000a0009, 0x000c000b, 0x000e000d, 0x0010000f, 0x2b,0x3b,0x57,0x9a,0x38,0xee,0x6c,0x50,0x9d,0x8e,0xd8,0x87,
0x00120011, 0x00140013, 0x00160015, 0x00180017, 0x001a0019, 0x001c001b, 0x001e001d, 0x08bb821f, 0x22002142, 0x24002300, 0x26002500, 0x28002700, 0xca,0x4e,0x13,0x6d,0x94,0x6b,0xe0,0x3b,0x6f,0xcc,0x6c,0x05,
0x2a002900, 0x2c002b00, 0x2e002d00, 0x30002f00, 0x32003100, 0x34003300, 0x36003500, 0x38003700, 0x3a003900, 0x3c003b00, 0x3e003d00, 0x40003f00, 0x46,0x80,0xef,0x44,0x67,0x66,0x52,0xf2,0x55,0xbd,0x2c,0x05,
0x42004100, 0x4b09f382, 0x00450044, 0x00470046, 0x00490048, 0x004b004a, 0x004d004c, 0x004f004e, 0x00510050, 0x00530052, 0x00550054, 0x00570056, 0xd4,0x55,0x4f,0x33,0x45,0x62,0x13,0xf4,0x2a,0xda,0x15,0xb1,
0x00590058, 0x005b005a, 0x005d005c, 0x005f005e, 0x01610060, 0x01220121, 0x01240123, 0x01260125, 0x01280127, 0x012a0129, 0x012c012b, 0x012e012d, 0xcc,0xe2,0xcd,0xf3,0x08,0xce,0xac,0xcd,0xc0,0xd8,0x15,0x69,
0x0130012f, 0x01320131, 0x01340133, 0x01360135, 0x01380137, 0x013a0139, 0x013c013b, 0x013e013d, 0x0140013f, 0x00ac0041, 0x008400a3, 0x00bd0085, 0x69,0x46,0x82,0x8c,0x5f,0x8b,0xde,0xcc,0xf3,0x5d,0x0a,0x8a,
0x00e80096, 0x008e0086, 0x009d008b, 0x00a400a9, 0x008a00ef, 0x008300da, 0x00f20093, 0x008d00f3, 0x00880097, 0x00de00c3, 0x009e00f1, 0x00f500aa, 0xd6,0x2b,0x25,0x8c,0xd3,0x80,0x13,0x29,0xb8,0xd5,0xd5,0x66,
0x00f600f4, 0x00ad00a2, 0x00c700c9, 0x006200ae, 0x00900063, 0x00cb0064, 0x00c80065, 0x00cf00ca, 0x00cd00cc, 0x00e900ce, 0x00d30066, 0x00d100d0, 0x6b,0x2e,0x3d,0xa5,0x7c,0x57,0xe2,0x79,0xba,0x0c,0xbf,0x55,
0x006700af, 0x009100f0, 0x00d400d6, 0x006800d5, 0x00ed00eb, 0x006a0089, 0x006b0069, 0x006c006d, 0x00a0006e, 0x0071006f, 0x00720070, 0x00750073, 0x29,0x5f,0xc5,0x1e,0x97,0x39,0xee,0x4a,0x72,0x31,0x2a,0xd9,
0x00760074, 0x00ea0077, 0x007a0078, 0x007b0079, 0x007c007d, 0x00a100b8, 0x007e007f, 0x00810080, 0x00ee00ec, 0x6e750eba, 0x646f6369, 0x78302365, 0x52,0xca,0xde,0x26,0xb3,0xa5,0xa9,0x8f,0xa5,0x37,0xa7,0x27,
0x31303030, 0x32200e8d, 0x33200e8d, 0x34200e8d, 0x35200e8d, 0x36200e8d, 0x37200e8d, 0x38200e8d, 0x39200e8d, 0x61200e8d, 0x62200e8d, 0x63200e8d, 0xe7,0xd4,0x7f,0x08,0xf3,0xa6,0x45,0x85,0x27,0x1d,0x5d,0xe5,
0x64200e8d, 0x65200e8d, 0x66200e8d, 0x31210e8c, 0x8d0e8d30, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8f,0x20,0xbf,0x38,0x24,0x19,0x6b,0x4e,0x5d,0x42,0x27,0xa7,
0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x8d3120ef, 0x66312def, 0x6c656406, 0x04657465, 0x6f727545, 0x3820ec8c, 0x3820ec8d, 0x32,0x86,0xb3,0xed,0xd6,0x1c,0x01,0x98,0xe1,0x48,0x05,0x3f,
0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x3820ec8d, 0x52,0xef,0x94,0xc8,0x99,0xe8,0xe1,0x08,0x29,0xd6,0x6e,0x94,
0x3820ec8d, 0x200ddc41, 0x0ddc4139, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0x24,0x19,0x65,0xe4,0x51,0xe5,0x6e,0xa4,0x35,0x22,0x19,0x0c,
0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0xef8d3920, 0x00663923, 0x48fa0500, 0x00f762f9, 0x9e,0xa2,0x45,0x80,0x5a,0x58,0x11,0xcf,0xd4,0x5c,0x76,0xe7,
0x57,0x94,0xb2,0x57,0xb3,0x82,0x4c,0x4d,0x0c,0x4b,0x52,0x89,
0xe4,0x63,0x2a,0x1a,0x04,0x44,0x72,0x4d,0x5c,0x37,0xc4,0xf1,
0x07,0x48,0x3b,0x45,0x27,0xde,0x1c,0x52,0x28,0x89,0x94,0x33,
0x29,0x39,0x4b,0xdd,0x6e,0x89,0x63,0x92,0x9e,0x4e,0x4c,0xb2,
0x28,0x89,0xdf,0x69,0x47,0x5c,0x3d,0xb1,0x8d,0x99,0x58,0x9a,
0xea,0x4c,0xc7,0xe4,0xa2,0x6d,0x8d,0xf8,0x11,0x2f,0xd6,0x27,
0xce,0xea,0x92,0x41,0x6e,0x6b,0x1c,0xf0,0x8c,0x24,0x15,0x35,
0xba,0x78,0xb6,0x48,0xeb,0x91,0x8b,0xe3,0x84,0x75,0xf4,0x31,
0x6d,0xca,0xf7,0xb9,0xb9,0x14,0x35,0x1a,0x8c,0x69,0x10,0x22,
0x93,0x13,0xc9,0xa3,0x07,0x57,0xd3,0x14,0x14,0xec,0x76,0x94,
0xe0,0x3b,0x54,0x86,0x55,0x5d,0x25,0xe3,0xe3,0xb5,0xdb,0x37,
0x57,0x94,0xf0,0xca,0xd4,0x20,0xd7,0xc3,0x2b,0x62,0x7d,0x20,
0x67,0x9c,0x04,0x60,0xcb,0xc4,0x24,0x4c,0xe2,0x10,0x9e,0x6a,
0x1c,0xa2,0x1e,0x19,0xd4,0xab,0x2c,0x7b,0x90,0xde,0x8c,0x00,
0x68,0x0e,0xe2,0xd6,0x3c,0x38,0x02,0xca,0x20,0x89,0x46,0x46,
0x6c,0x86,0xde,0x01,0x81,0xa5,0x12,0xc6,0x4e,0x73,0xec,0x80,
0xdc,0xfb,0xb1,0x54,0xb6,0x80,0xad,0xef,0x0c,0x09,0x2a,0x1c,
0x06,0x39,0xa0,0x76,0x65,0xfa,0x65,0xa8,0xa7,0x1b,0x99,0x26,
0x52,0x8c,0xb2,0x88,0xb4,0x86,0xa1,0xe2,0xd7,0x25,0x08,0xe9,
0x46,0xd5,0x25,0xe4,0x59,0x51,0x3c,0xcb,0x49,0x3e,0x90,0xb4,
0xfe,0x5e,0x63,0x9e,0x53,0x71,0x04,0xd6,0xb7,0xeb,0x35,0xd8,
0x4f,0x6b,0xeb,0x33,0x9e,0xa0,0x68,0xc7,0xd2,0x56,0x14,0x6d,
0x4a,0x7a,0xc2,0x38,0xaf,0xab,0x30,0x97,0xad,0x46,0x8e,0x13,
0x19,0x4a,0x59,0x41,0x35,0xd5,0x98,0x96,0x1a,0x8b,0x6c,0x0a,
0x2d,0xfd,0x60,0x84,0x59,0xfd,0x38,0x2e,0x1b,0xcd,0xd5,0x55,
0x08,0xfa,0x70,0x35,0x4a,0xe7,0x15,0x35,0x74,0x9d,0x01,0x5c,
0x13,0xa4,0x7c,0x15,0x50,0xa7,0xc4,0xc9,0x1f,0x71,0xb3,0xe2,
0xfe,0x40,0x10,0xa4,0xb9,0x71,0xc9,0x60,0x60,0x92,0x02,0x3f,
0xf3,0x70,0x48,0x46,0x52,0xb9,0x5e,0x0a,0x02,0xba,0x0e,0x5d,
0x05,0x29,0x98,0x6f,0x27,0x21,0xc8,0xcd,0x39,0x50,0xf6,0xaf,
0xc4,0xda,0xa2,0xaa,0xa7,0x10,0xf0,0xaa,0x1b,0x6c,0x95,0xd9,
0xa4,0x21,0x9b,0xcc,0x62,0xa1,0x28,0x8f,0xa9,0xd4,0x26,0xbd,
0x02,0x0f,0x29,0xc5,0x37,0x85,0x41,0x4d,0x2b,0x2f,0xd7,0xa2,
0xa3,0xab,0x8c,0xe2,0x97,0x3c,0x9d,0x96,0x13,0xa7,0xa4,0xc2,
0x93,0x96,0x8e,0x52,0xd2,0xc0,0x67,0x89,0xf1,0x01,0x32,0xeb,
0xd7,0xaa,0x74,0x91,0x72,0x28,0x1c,0xad,0x71,0x90,0xe1,0xbd,
0x0d,0xb2,0xeb,0x15,0xb8,0xd2,0xd8,0xac,0x37,0xd7,0xf7,0xa2,
0x38,0xa4,0x28,0x52,0xc3,0xc6,0x1d,0x2d,0xc5,0xf9,0x5e,0xd3,
0xf0,0xff,0x0a,0x7c,0xbb,0x99,0x5d,0x85,0x46,0xd7,0x01,0x33,
0x0b,0x5d,0xf4,0x62,0x8c,0xe0,0xaf,0x87,0xf3,0x6d,0x7c,0x90,
0xaf,0xcb,0x2b,0x2a,0x3e,0x91,0x69,0xc8,0x53,0x19,0x57,0x9d,
0x39,0x38,0x11,0xe0,0xb0,0x9b,0xb3,0x26,0x28,0xdc,0xd1,0x40,
0x95,0xdf,0xad,0x04,0x79,0xdc,0x5a,0x6a,0x8a,0xbf,0x7a,0x39,
0x35,0xb8,0x51,0x75,0x56,0x5c,0x50,0x6b,0x01,0xef,0x06,0x61,
0xfc,0xc6,0x8f,0x26,0xd6,0xb9,0x9e,0x80,0xd5,0x65,0xb2,0xd8,
0x8e,0xb0,0x9a,0xac,0x4a,0xc4,0x15,0x92,0x52,0x32,0xd0,0x9c,
0x9e,0xe0,0x04,0xb1,0x64,0x90,0xae,0xfb,0xf3,0x04,0xeb,0xfe,
0xda,0x95,0x78,0x22,0x53,0xfb,0xa0,0x1a,0x3f,0x21,0x3f,0x97,
0xcc,0xa5,0x4c,0x28,0x45,0x8f,0x4d,0x82,0x91,0x37,0x61,0x98,
0x31,0x97,0x20,0x66,0xed,0x40,0xbf,0xda,0x5a,0xf9,0x2c,0x12,
0xed,0x50,0xc6,0x41,0xb2,0xd6,0x96,0xd4,0x66,0xac,0xdd,0xa3,
0xe0,0x23,0x2b,0xad,0xed,0xe4,0x47,0x9b,0x0c,0x85,0x8d,0x66,
0xec,0x25,0x6f,0x7c,0x2a,0xe3,0x66,0xc6,0xcb,0x8e,0x5c,0x2f,
0xe2,0x12,0xac,0x41,0xb5,0xd9,0xf1,0x53,0x6b,0x74,0x89,0x4c,
0x02,0xa1,0x99,0x1d,0x30,0xaf,0x93,0x66,0xed,0x2b,0x72,0xcd,
0x52,0x49,0x50,0xb7,0x64,0xd1,0x05,0xee,0xe9,0xa4,0x22,0xea,
0x92,0x54,0x53,0xca,0x7e,0x6c,0xd0,0x1f,0x6b,0x41,0x3b,0x36,
0x58,0xca,0x97,0x3b,0xfa,0x95,0x14,0x89,0xf2,0x15,0x57,0x54,
0x18,0xf5,0xd5,0x08,0x68,0xeb,0x5f,0x84,0xb2,0x21,0x12,0x0a,
0x14,0x08,0xdf,0x04,0xa5,0xa3,0xb0,0xb8,0x6b,0x01,0xa0,0xde,
0xda,0xb5,0x92,0x82,0x87,0xa9,0x5a,0x77,0x53,0xe2,0xf6,0x30,
0x21,0x97,0x40,0x10,0x15,0x6b,0xe4,0x39,0xb3,0x62,0x22,0x1a,
0x19,0x0d,0xe7,0x1d,0xd3,0xec,0x71,0xcc,0x3b,0xd5,0x9c,0x34,
0xb2,0x21,0xef,0x84,0x7d,0x10,0xbc,0x4c,0x1f,0x84,0x98,0x5f,
0x3c,0xba,0x0d,0x02,0xfe,0x3c,0xf0,0xfb,0x26,0x14,0x88,0x2c,
0x24,0xf1,0x8d,0xa0,0xef,0x4a,0x46,0x6e,0x2a,0xf4,0x5d,0xe1,
0xae,0x3c,0x0f,0xd6,0xb5,0x19,0xf6,0x71,0xe1,0x5f,0x6f,0x52,
0x4e,0x1f,0x83,0x44,0xdf,0xb0,0xd1,0x56,0x9e,0xfc,0xe6,0xf5,
0x24,0x89,0x9b,0x19,0x00,0xb5,0xb4,0x2e,0x4f,0x56,0x1b,0xf7,
0x0b,0x28,0x46,0x36,0x5e,0x26,0x9f,0x3b,0x25,0x3f,0x9f,0x8b,
0x78,0xf6,0x4f,0x84,0x6f,0x66,0x0d,0x62,0x16,0xc7,0x4c,0xb1,
0x4f,0x98,0xf3,0xf2,0x57,0x2f,0x2a,0xd5,0xb0,0xf0,0x62,0xb5,
0xae,0x44,0x66,0xb0,0xba,0x23,0xab,0x25,0xa8,0xad,0x9a,0xca,
0xd0,0x88,0xcf,0x93,0x38,0x30,0x8e,0x0a,0x91,0x1a,0x21,0xdd,
0x24,0x3c,0x5a,0x03,0x35,0x5e,0xc9,0xca,0xfe,0x4e,0xe6,0xce,
0x85,0x08,0x43,0xe1,0x0d,0x33,0xa2,0xbf,0x5b,0x3b,0xb6,0xbe,
0x3b,0x2b,0xf1,0x79,0xd1,0x0b,0x59,0xbc,0x91,0x27,0xe9,0xb9,
0x11,0x76,0x46,0xec,0xa3,0x44,0x75,0x5a,0x06,0x62,0x5d,0xdf,
0x8e,0x13,0x51,0x59,0xd5,0x03,0xcf,0xc8,0x6f,0x56,0x76,0xab,
0xd3,0x3b,0x94,0x57,0xa1,0x8e,0xce,0xb5,0x8f,0x4b,0xd1,0x98,
0x55,0x2b,0xac,0xe2,0x85,0x92,0x92,0x22,0xab,0x70,0xa4,0xb5,
0xbc,0x54,0x8d,0xbc,0x8f,0x97,0xad,0xe6,0x7b,0xdb,0xfc,0x3b,
0x45,0x75,0xcc,0xa0,0xe8,0x63,0x72,0x25,0x77,0x49,0xa0,0x2b,
0x64,0xdd,0x6a,0x18,0x69,0x9e,0xf6,0x99,0x22,0xfb,0xd6,0xf8,
0xed,0xa5,0x40,0x93,0x1f,0xdb,0x95,0x6b,0xcb,0x95,0x7d,0x44,
0x61,0xe7,0x0e,0x2f,0xeb,0x23,0xea,0xf6,0xed,0xa0,0x72,0x71,
0x9e,0x5e,0x2e,0xae,0x11,0x6b,0x42,0xc9,0x58,0x27,0xa7,0xde,
0x92,0x5e,0x27,0x1a,0x88,0x3a,0x3d,0x97,0x3f,0xf2,0xdb,0x55,
0xed,0x60,0xa5,0x1a,0x46,0x99,0xb7,0x27,0x9a,0x6e,0xa4,0xbb,
0xa7,0xb5,0x56,0x61,0x82,0x34,0x1e,0xc6,0x8d,0x86,0xd9,0xaa,
0x91,0x30,0xd6,0x7a,0xaa,0x01,0x77,0x9d,0x81,0x46,0x0d,0x8f,
0x28,0x02,0x44,0xc5,0xc3,0x4a,0x4c,0x2c,0xb1,0xa0,0x50,0xf3,
0x92,0x46,0x98,0x89,0x40,0xad,0x5e,0xdd,0x0e,0xf8,0xf5,0x6c,
0x4e,0x6a,0x6b,0xa6,0x52,0x35,0xbd,0x96,0xdf,0x89,0xb5,0x9e,
0x35,0x51,0x7e,0xff,0x48,0xe1,0xea,0x4f,0xd9,0xda,0x79,0xd1,
0x5a,0x20,0x97,0x53,0x1f,0x28,0x58,0xe5,0x0a,0x69,0xbe,0x20,
0xae,0x62,0x46,0xd4,0x36,0x79,0x23,0x9d,0x6b,0x75,0x2d,0x8e,
0x0a,0x10,0x36,0xd1,0xa7,0x91,0x64,0x9d,0x20,0x20,0x41,0xc5,
0x9f,0x98,0xea,0xc4,0x32,0x8b,0xbc,0x31,0xc6,0xfd,0x1c,0xa4,
0x3d,0x2c,0x64,0xba,0x81,0xee,0xb1,0x08,0x5e,0x26,0xa1,0x21,
0xeb,0xec,0x50,0x0c,0xd7,0x48,0x66,0x6d,0xf3,0x4e,0x49,0xae,
0x95,0xb8,0x02,0x67,0x52,0xc2,0xdc,0xba,0xf9,0xcf,0xef,0x5f,
0x9a,0xcb,0x83,0x25,0xce,0x7a,0x34,0x56,0x8f,0xca,0xde,0x57,
0xe4,0xc5,0x24,0xca,0x4c,0x96,0xd6,0x33,0x67,0x1a,0xc8,0x8d,
0x69,0x0d,0xac,0xc3,0xeb,0x01,0xab,0xe2,0x33,0x39,0xdc,0x38,
0x3b,0x1e,0x24,0xb7,0xee,0x28,0xb7,0x57,0x22,0xaf,0xf7,0x21,
0x57,0x6c,0x11,0xfd,0xc8,0x6c,0x85,0xfc,0x4c,0x6e,0x27,0x3c,
0x81,0xbd,0x40,0x29,0xa2,0xb8,0x19,0x99,0x40,0x8c,0x92,0xea,
0xc0,0x9f,0x67,0x96,0xb8,0xf6,0x8a,0xe4,0x37,0xca,0x4b,0xe1,
0x56,0xbf,0x92,0xe6,0xb2,0x58,0x86,0x83,0xc9,0x3d,0x79,0x92,
0x86,0x00,0x18,0x72,0xee,0xe8,0xeb,0x88,0x20,0xa3,0x42,0xea,
0x88,0x42,0x52,0x27,0x96,0x54,0x3d,0xfb,0x7e,0x07,0xd4,0x54,
0x7d,0x2c,0xa5,0xfc,0xa5,0xcb,0x99,0x9d,0x25,0xca,0xdf,0x13,
0x56,0x9d,0x10,0x35,0x11,0x63,0xa0,0x12,0x94,0xc8,0xac,0x03,
0xd6,0x59,0x4b,0x28,0xed,0x11,0xc3,0x8b,0x9e,0x94,0x24,0xc7,
0x2a,0xb2,0x99,0x8a,0x4b,0xf0,0x3b,0xa6,0x56,0x45,0x2f,0x76,
0xbd,0xb2,0xa4,0xc5,0xef,0xed,0x6e,0xf1,0xfb,0x15,0x65,0xac,
0x1d,0xde,0x3e,0x93,0x4d,0xb1,0x80,0x7f,0x23,0x07,0xe1,0xf7,
0x2d,0xb2,0x6e,0x1f,0x0a,0x8c,0x57,0x8a,0x38,0x46,0x5a,0x20,
0x9b,0x24,0xb5,0x97,0x05,0x79,0x85,0x6b,0x7c,0x31,0x49,0x5b,
0x48,0xc8,0x9d,0x87,0x48,0xd1,0xee,0xcf,0xc8,0x42,0xb9,0x44,
0x4c,0xeb,0x87,0xbc,0xfc,0xfa,0xa1,0x3c,0xde,0xf1,0xd8,0x2a,
0x85,0xdc,0x0c,0x3f,0x86,0x7b,0xaa,0x41,0xcc,0xf8,0xbe,0x6c,
0xae,0xa4,0x57,0x92,0x3b,0x61,0x67,0x7c,0x81,0x89,0x97,0x91,
0x78,0xb5,0xc8,0x99,0x9f,0xcd,0xab,0x90,0x5d,0x84,0x92,0xb8,
0x8b,0x71,0x6f,0x6f,0x18,0x7f,0xf8,0x55,0x2b,0xd7,0x88,0x8a,
0x7e,0x21,0xfc,0x64,0x59,0x1e,0x50,0x1f,0xa8,0x03,0x03,0x51,
0x7f,0x84,0x42,0x1d,0x72,0x91,0x27,0xd9,0x0b,0x1c,0x39,0x58,
0x10,0xd8,0xfa,0xaa,0x7c,0x01,0x54,0xcb,0xbd,0x48,0xd8,0x54,
0x61,0x5c,0x58,0x83,0xad,0xed,0x93,0xf5,0x35,0xb3,0x39,0xbd,
0xcc,0xb8,0x99,0xfe,0x34,0x7a,0x4a,0xb6,0x89,0x11,0xc6,0xa6,
0xe2,0xb5,0x7f,0x05,0xf5,0x35,0xd4,0x73,0xc8,0xda,0xf0,0x5f,
0x47,0xef,0x2e,0x47,0x39,0x0c,0x48,0xaf,0x67,0xd4,0x80,0x29,
0x18,0x97,0x5d,0x27,0x4c,0x49,0x0d,0xfc,0x78,0x00,0xd5,0xa5,
0x2d,0x43,0x32,0xfa,0xa4,0x11,0x34,0xab,0x26,0x0b,0x61,0x35,
0x80,0xd4,0xa3,0x1e,0x98,0xc2,0x4a,0xd9,0x38,0x0d,0x80,0x35,
0x75,0x61,0xc7,0x11,0xd6,0x78,0xed,0xad,0x46,0x5c,0xa8,0x21,
0xb4,0x04,0x2d,0x3a,0x82,0x16,0x58,0x75,0xe8,0x3b,0x37,0x67,
0xbd,0x76,0x9d,0x7c,0x0b,0x86,0xdc,0xab,0xa7,0xef,0xa6,0x19,
0xc6,0x1e,0xb8,0xb5,0xe8,0xbc,0xd5,0xad,0xae,0x06,0xf4,0xb4,
0x76,0x18,0xf3,0xe8,0xc8,0x50,0xa4,0xc9,0xb2,0xfe,0x90,0xb1,
0xc9,0x1f,0xe6,0x92,0xaa,0x9e,0x4e,0x5f,0x68,0x93,0xce,0x81,
0x05,0xd6,0xa2,0x17,0x75,0x11,0x8c,0xcd,0x55,0xed,0x16,0x2a,
0x71,0xff,0x76,0x4d,0x39,0x44,0xe9,0x47,0xdd,0xce,0x75,0xbc,
0x2c,0x59,0x95,0xcc,0x82,0x32,0x05,0xea,0x9a,0x6a,0x24,0x84,
0xcc,0x0c,0x2e,0x61,0xb6,0xcf,0x04,0xae,0x50,0x57,0x36,0x1c,
0xb2,0xb8,0x3e,0x05,0x0a,0x46,0xbf,0xbd,0x52,0x6a,0x24,0xe5,
0x38,0x99,0x31,0x01,0x8c,0x86,0xf4,0x73,0x3c,0x7d,0xfd,0xd8,
0x48,0xbe,0x94,0x83,0x06,0xfa,0x70,0x4d,0x0a,0xfb,0xf6,0x15,
0xf2,0x6a,0x4e,0x32,0x33,0xac,0x90,0xd7,0x93,0x20,0x93,0xd6,
0x8b,0x5d,0x75,0x15,0xf4,0x2b,0x8f,0x2b,0x33,0x43,0xf2,0xc6,
0x65,0xa5,0x01,0x3c,0xb3,0x91,0x01,0xb4,0x29,0x8c,0x6d,0x9d,
0x98,0xc3,0x15,0x30,0x57,0x83,0x1c,0xec,0xa9,0xe2,0x4f,0x3d,
0x37,0xaf,0x3c,0x3a,0xf1,0xd0,0x54,0x52,0xf2,0xdd,0xda,0xf9,
0xda,0xdd,0xfa,0xdd,0x7d,0x8d,0xba,0xc7,0x26,0x01,0x7e,0x4e,
0xeb,0x58,0xd0,0xd6,0xc8,0x33,0x8c,0xec,0xb1,0xd0,0xff,0x16,
0x5a,0xd6,0x8d,0xec,0xc0,0x47,0x67,0x8d,0xb4,0xbb,0xf0,0x19,
0x98,0xde,0x6c,0x3d,0xba,0x22,0x7e,0x94,0xfc,0xdf,0xbc,0x5e,
0x7c,0xfc,0x16,0x42,0x6c,0xa3,0x21,0x0d,0xfd,0x07,0xda,0x30,
0xe4,0xfa,0xbb,0x32,0x18,0x18,0x3f,0xb7,0x71,0x40,0x18,0xf8,
0xed,0xaa,0xfe,0xad,0x5a,0x7f,0xc4,0xaa,0x0e,0x50,0xea,0x80,
0x19,0xc0,0xa5,0xea,0xcb,0xe6,0xc1,0xc5,0xfa,0xb0,0x0d,0x85,
0xab,0x5d,0xd9,0x77,0x55,0xf2,0x5b,0x73,0x62,0xde,0xea,0xf4,
0x01,0x0d,0x9e,0x93,0xfe,0x56,0x56,0xa7,0xa0,0x6a,0x45,0xb8,
0x7a,0x4f,0x61,0xed,0x5e,0x1a,0x0f,0x76,0x0c,0xfd,0x63,0x5e,
0x9f,0x23,0x9e,0xa4,0x95,0x49,0x66,0x32,0x0e,0x9a,0x78,0x86,
0x49,0xc4,0x97,0x12,0xb4,0xb4,0x20,0x26,0xb2,0x64,0xb6,0xa1,
0x7b,0x58,0x4f,0xcc,0xb1,0x9e,0x9e,0x82,0x28,0xa4,0x8d,0x62,
0x4b,0x41,0xed,0xa8,0xa3,0x71,0xdc,0xb1,0x5e,0xb8,0x12,0x5f,
0x6a,0xbc,0x20,0x6b,0x50,0xec,0xb1,0x6e,0xda,0xc9,0xfb,0xa5,
0x8a,0xe0,0x34,0x8a,0x1d,0x9b,0xc4,0xe3,0xea,0x82,0x0f,0x34,
0x61,0x03,0x4d,0xe6,0x9c,0xa4,0x90,0x83,0x51,0xe2,0x48,0xb6,
0x3e,0x36,0xe2,0x3e,0x90,0x16,0xc8,0xaa,0x39,0x33,0x1a,0x35,
0x9f,0x9d,0x1a,0x1d,0x7c,0xb8,0xf5,0x85,0x5e,0x26,0xdd,0x45,
0x75,0x9e,0xd0,0xaa,0x2d,0x9c,0x11,0xf6,0x8a,0x73,0x3c,0x53,
0xfb,0xda,0xad,0x33,0xc2,0x99,0x57,0x19,0x2a,0xf8,0x15,0x40,
0xc9,0xef,0x55,0x44,0xc9,0x2d,0x07,0x3c,0xf3,0x87,0x41,0xcd,
0x23,0xeb,0xd9,0x9b,0xf5,0xb7,0x4b,0x4a,0x72,0x44,0x3d,0xee,
0x1c,0xd0,0x91,0x0a,0x26,0xb5,0x9b,0x85,0x06,0xc0,0x41,0x44,
0x07,0x1a,0x05,0x89,0x61,0x2f,0x39,0x4e,0xe4,0xc0,0x94,0x32,
0x69,0x34,0x21,0x0f,0x26,0x75,0xa8,0xea,0x88,0x87,0x35,0x10,
0x32,0xb2,0x1b,0x46,0x3e,0x6c,0x3a,0x34,0xd3,0xfc,0x8d,0x42,
0xd4,0x28,0x98,0xf2,0xc1,0xb1,0x4d,0xe8,0x64,0x12,0x77,0x2e,
0x35,0x68,0x4e,0xa1,0x34,0x1f,0x90,0x33,0xb1,0x3c,0x6d,0xeb,
0x01,0xdb,0xf5,0xfa,0xeb,0x85,0xee,0x13,0xaf,0x18,0x52,0xfd,
0x8d,0x15,0x79,0x0d,0x69,0xd5,0x23,0x96,0x06,0x35,0x6a,0xc5,
0x50,0xa8,0xf7,0x26,0x2b,0xf6,0x1f,0xd1,0xee,0x96,0x99,0xf9,
0x2d,0x66,0x6e,0xe7,0xcc,0x9a,0xe2,0xd2,0xc1,0x06,0xea,0x23,
0xe3,0xbe,0x93,0xb5,0x0c,0x14,0x54,0xef,0x49,0x6d,0x31,0x6e,
0xaa,0x93,0xec,0x7a,0x61,0x49,0x06,0xd9,0x40,0x60,0x1a,0xa5,
0x93,0xea,0x82,0xa8,0xaa,0x04,0x94,0x11,0x8d,0xcc,0xe5,0x76,
0x1d,0x7d,0x4e,0xe5,0xe0,0xd8,0xba,0xb0,0xb4,0x48,0x7a,0x1c,
0x66,0x66,0x8a,0xa8,0xbb,0x61,0xb6,0x45,0xa5,0x68,0x10,0xb9,
0xf7,0xa3,0xb8,0x59,0xa9,0x23,0x66,0xce,0x0d,0x93,0x3e,0x8e,
0xd2,0xfa,0x4c,0x96,0xeb,0x64,0x77,0xae,0xf2,0x17,0x09,0xc9,
0xe0,0xf5,0xc4,0xf0,0x96,0x14,0xf0,0xcb,0xbd,0x65,0xb5,0x91,
0x36,0x93,0xcb,0x89,0x84,0xe9,0x76,0x19,0xa6,0x3b,0xae,0xa5,
0x0b,0x3e,0x45,0x2d,0x86,0x0d,0xd6,0x28,0x91,0xbe,0xbc,0x96,
0x8c,0x2c,0x49,0x32,0xc1,0xaa,0xbe,0x7d,0x9a,0x1b,0xad,0xf2,
0x5c,0x4c,0x71,0x8b,0x58,0x95,0x85,0xae,0x7a,0x6b,0xb1,0xa5,
0xfa,0x4b,0x85,0x3e,0x35,0xf0,0x72,0xfa,0x4d,0xaa,0x4b,0x7b,
0xdd,0x75,0xe4,0x85,0x3a,0xc6,0x4e,0xf8,0x4e,0x8d,0x1a,0xbd,
0xc1,0x1a,0xe9,0x3c,0x1d,0xa5,0xf0,0x3b,0xdb,0xfc,0xde,0xf5,
0xe2,0xe9,0xa1,0x02,0x49,0x03,0xe7,0x85,0x26,0x34,0xe4,0xbc,
0x50,0x83,0x47,0x95,0x36,0x9a,0xeb,0x85,0x4b,0x75,0xce,0x0b,
0x05,0x10,0x94,0x55,0x6c,0xb0,0xfe,0x8d,0x67,0x47,0x83,0xa8,
0x92,0x28,0xea,0x41,0x92,0xae,0x41,0xb2,0x98,0x3b,0x05,0x3f,
0x59,0xec,0xcb,0x78,0x8d,0x35,0xe1,0x94,0xbf,0xc5,0xeb,0x33,
0x51,0x10,0xfc,0x56,0x4c,0x81,0xf3,0xfb,0x6c,0xf1,0xe7,0x2d,
0xe2,0xf7,0xcb,0x81,0x69,0xe8,0x10,0xaf,0xb9,0x89,0x3f,0xa0,
0x9d,0xd9,0x26,0xd7,0x89,0x6b,0xca,0x43,0xc3,0x18,0x6d,0xd4,
0x33,0x4d,0xa9,0x0d,0xbe,0x1e,0xdf,0x6a,0xca,0x44,0xc3,0x18,
0x7a,0x28,0x13,0x1b,0x09,0x41,0x5d,0x32,0xd1,0x1c,0x8a,0x3c,
0xad,0xaa,0x1f,0x49,0x32,0x97,0x21,0xa6,0xbc,0xa4,0x04,0x82,
0xad,0x31,0xfe,0xa8,0xe7,0xbf,0x56,0x1c,0xba,0x6e,0xae,0x12,
0xd7,0x35,0x55,0x75,0x5a,0x84,0xea,0x39,0x8d,0x94,0x1d,0x5b,
0xd3,0xf9,0x5d,0xe4,0x7b,0xf4,0x72,0x07,0xf5,0xe4,0x12,0xea,
0xca,0x2b,0x90,0x84,0x8d,0xe9,0x6a,0xd4,0x73,0xab,0x91,0x74,
0x55,0xe6,0x5a,0x06,0x5e,0x6d,0xaa,0x06,0x95,0x9c,0xc8,0x82,
0xf8,0xd1,0x07,0x3b,0xa3,0x3d,0x04,0x33,0xe1,0xf1,0x68,0xdf,
0x82,0x36,0x38,0x16,0xed,0xdb,0xc4,0x79,0x87,0xd8,0x2f,0x84,
0x5d,0x39,0x82,0x47,0x53,0x70,0x1e,0x45,0x47,0x1d,0xf8,0x1d,
0x14,0x5d,0x73,0x12,0xb8,0xd1,0xbe,0x85,0x31,0xbc,0x30,0xda,
0xb7,0xb1,0x74,0x5b,0x11,0xed,0x3b,0xc4,0x67,0x0a,0x30,0x01,
0x6e,0x8b,0xf6,0x9b,0x82,0xf3,0x36,0x20,0xa7,0x25,0x1a,0x67,
0xb8,0x1f,0x8e,0x33,0xdc,0x0f,0xc7,0x19,0xee,0xdb,0x30,0x1f,
0x1e,0x89,0xf6,0x1d,0xe2,0x33,0xe1,0x38,0xc3,0xfd,0x70,0x9c,
0xab,0x61,0x00,0xff,0xad,0xc1,0xd4,0x0d,0x5f,0x5d,0x58,0xbb,
0xff,0x42,0xcf,0x9e,0xd3,0x47,0xcf,0x8c,0x0e,0x9f,0xe8,0xd9,
0x71,0xfa,0xe8,0xf1,0xe3,0x23,0xa7,0xef,0x1d,0x39,0x7c,0xf6,
0xd8,0xf0,0xe9,0x3d,0x7b,0xf6,0xf5,0xec,0x3a,0x7d,0xf2,0xf0,
0xe1,0x0b,0xdb,0x8e,0x8d,0x0c,0x9f,0xd8,0xb3,0x67,0xf5,0xc0,
0xc0,0x9a,0x55,0xf8,0xdf,0x5d,0x0b,0xfb,0xe1,0x02,0xf4,0xc0,
0x1e,0x38,0x0d,0x47,0xe1,0x0c,0x8c,0xc2,0x30,0x9c,0xc0,0xc7,
0x3b,0x82,0xe3,0xe3,0xf8,0x6f,0x04,0xef,0xdd,0x8b,0x5f,0x0f,
0xc3,0x59,0x3c,0xca,0x61,0x7c,0xb4,0x07,0xff,0xed,0xc3,0x9f,
0xd9,0x85,0xf7,0x4f,0xe2,0xf3,0x87,0xf1,0x15,0xb6,0xe1,0xf7,
0x46,0x82,0xef,0xfa,0xef,0xfa,0x78,0x8a,0x1f,0x5d,0x01,0x06,
0x99,0x07,0x42,0xc1,0x8b,0x85,0x6c,0xe4,0xa0,0x02,0x6a,0x42,
0x45,0xd4,0x8c,0x5a,0xd0,0x04,0x34,0x11,0xb5,0xa2,0x49,0xa8,
0x0d,0x4d,0x46,0xed,0x68,0x0a,0xea,0x40,0x9d,0xa8,0x0b,0x75,
0xa3,0xa9,0x68,0x1a,0x9a,0x8e,0x66,0xa0,0x99,0x68,0x16,0x9a,
0x8d,0xe6,0xa0,0xb9,0x68,0x1e,0xea,0x09,0xa6,0x75,0x01,0x63,
0xa3,0x08,0xcd,0xd0,0x82,0x71,0x3e,0x11,0x5a,0x31,0xb6,0xdb,
0x30,0xff,0xb7,0x63,0xca,0x74,0xe0,0x59,0xd0,0x85,0xe7,0xc6,
0x54,0x3c,0x17,0xa6,0xc3,0x0c,0x8c,0xb3,0x59,0x30,0x1b,0xe6,
0xc0,0x5c,0x3c,0x2f,0x7a,0xa0,0x17,0xe3,0x79,0x01,0xa6,0x47,
0x3f,0xa6,0xe6,0x22,0x58,0x0c,0x4b,0x60,0x29,0x9e,0x29,0xcb,
0x31,0x3d,0x57,0x06,0x18,0x75,0x31,0x7e,0x4b,0x18,0xaf,0x6b,
0x61,0x10,0xcf,0x9d,0x32,0x54,0x60,0x3d,0x9e,0x41,0x1b,0x61,
0x13,0xa6,0xec,0x66,0x18,0x82,0x2d,0xb0,0x15,0xc3,0x7c,0x3b,
0x6c,0x87,0x3b,0x30,0xae,0x76,0xc2,0xc7,0xe0,0x4e,0x3c,0xb3,
0xee,0x82,0xdf,0x84,0xbb,0xf1,0xfc,0xda,0x05,0xbf,0x85,0x71,
0xb6,0x1b,0x63,0xe2,0xe3,0xb0,0x17,0xee,0xc3,0xd8,0xfa,0x04,
0xfc,0x36,0x7c,0x12,0xee,0x87,0xdf,0x81,0x07,0xe0,0x41,0x78,
0x08,0x86,0x51,0x2f,0x9a,0x8f,0x16,0xa0,0x3e,0xd4,0x8f,0x16,
0xa2,0x45,0x68,0x31,0x5a,0x82,0x96,0xa2,0x65,0x68,0x39,0x5a,
0x81,0x56,0xa2,0x55,0x68,0x00,0xb9,0x68,0x35,0x2a,0xa1,0x35,
0x68,0x2d,0x1a,0x44,0xeb,0x50,0x19,0x55,0xd0,0x7a,0xb4,0x01,
0x6d,0x44,0x9b,0xd0,0x6d,0x68,0x33,0x1a,0x42,0x5b,0xe0,0x2a,
0xfc,0x19,0x3c,0x09,0x9f,0x87,0xef,0xc2,0x65,0x78,0x17,0x9e,
0x82,0x67,0xe0,0x4b,0xf0,0x27,0xf0,0x17,0xf0,0x0d,0xf8,0x05,
0x5c,0x84,0xb7,0xe1,0x09,0xf8,0x03,0xf8,0x1f,0xf8,0x5f,0xf8,
0x32,0xfc,0x21,0x3c,0x0d,0xdf,0x83,0x9f,0xc0,0x7f,0xc3,0x0b,
0xf0,0x12,0xfc,0x12,0x3e,0x80,0x5f,0xc1,0x8b,0xf0,0x97,0xf0,
0x4f,0xf0,0x8f,0x70,0x0d,0x73,0xc0,0x01,0xb8,0x04,0x07,0xe1,
0x5f,0x30,0x05,0x6f,0xc0,0x3f,0xc3,0xbf,0xc1,0x6b,0xf0,0xaf,
0xf0,0x7d,0xf8,0x19,0x1c,0x82,0x1f,0xc2,0xeb,0xf0,0xef,0xf0,
0x4d,0x4c,0xe3,0xf7,0xe1,0xab,0xf0,0x23,0x78,0x03,0xde,0x84,
0x23,0xf0,0x73,0xf8,0x2f,0xf8,0x22,0x7c,0x0a,0x73,0xc8,0xa7,
0x31,0x87,0x1c,0xc3,0x54,0xff,0x3a,0xe6,0x84,0xdf,0x85,0x53,
0x98,0x23,0xce,0x60,0x3e,0x19,0x85,0x73,0xf0,0x30,0xdc,0x84,
0xf3,0x98,0x97,0x2f,0xc0,0x67,0xe0,0xf7,0xe0,0xb3,0x70,0x1d,
0xfe,0x14,0x3e,0x07,0x8f,0x62,0x1d,0xfa,0x18,0xbc,0x07,0xb7,
0xe0,0xdb,0x6d,0x67,0x4f,0x1c,0x3d,0x70,0xf2,0xe0,0xc8,0x82,
0x81,0xf3,0x03,0x03,0x03,0x2e,0x7d,0xb8,0x9a,0x3e,0x2c,0xd1,
0x87,0x6b,0xe8,0xc3,0xb5,0xf4,0xe1,0x20,0x7d,0xb8,0x8e,0x3e,
0x2c,0xd3,0x87,0x15,0xfa,0x70,0x98,0x3e,0xdc,0x4f,0x1f,0x1e,
0xa0,0x0f,0x0f,0xd2,0x87,0x23,0xf4,0xe1,0x21,0xea,0xd0,0x1d,
0xa0,0x0f,0x69,0x78,0x5d,0x1a,0x5e,0x97,0x86,0xd7,0xa5,0xe1,
0x75,0x69,0x78,0x5d,0x1a,0x5e,0x97,0x86,0xd7,0xa5,0xe1,0x75,
0x69,0x78,0x5d,0x1a,0x5e,0x97,0x86,0xd7,0xa5,0xe1,0x75,0x69,
0x78,0x5d,0x1a,0x5e,0xf7,0x50,0xd3,0xc1,0x91,0x63,0x23,0xa3,
0x23,0xce,0xf6,0xb3,0xa7,0x4f,0x52,0x6f,0x95,0x69,0x60,0xcb,
0x34,0xb0,0x65,0x1a,0xd8,0x32,0x0d,0x6c,0x99,0x06,0xb6,0x4c,
0x03,0x5b,0xa6,0x81,0x2d,0xd3,0xc0,0x96,0x69,0x60,0xcb,0x34,
0xb0,0x65,0x1a,0xd8,0x32,0x0d,0x6c,0x99,0x06,0xb6,0x4c,0x03,
0x5b,0xa6,0x89,0x5b,0xa1,0x89,0x5b,0xa1,0xe1,0xad,0xd0,0xf0,
0x56,0x68,0x78,0x2b,0x34,0xbc,0x15,0x1a,0xde,0x0a,0x0d,0x6f,
0x85,0x86,0xb7,0x42,0xc3,0x5b,0xa1,0xe1,0xad,0xd0,0xf0,0x56,
0x68,0x78,0x2b,0x34,0xbc,0x15,0x1a,0xde,0x0a,0x0d,0x6f,0xe5,
0x10,0xc0,0xff,0x01,0x48,0xf9,0x62,0xf7
}; };
const unsigned int font_proggyClean_compressed_size=5936;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -22,7 +22,7 @@
#include "fonts.h" #include "fonts.h"
const unsigned int* builtinFont[]={ const unsigned char* builtinFont[]={
font_plexSans_compressed_data, font_plexSans_compressed_data,
font_liberationSans_compressed_data, font_liberationSans_compressed_data,
font_exo_compressed_data, font_exo_compressed_data,
@ -38,7 +38,7 @@ const unsigned int builtinFontLen[]={
font_unifont_compressed_size font_unifont_compressed_size
}; };
const unsigned int* builtinFontM[]={ const unsigned char* builtinFontM[]={
font_plexMono_compressed_data, font_plexMono_compressed_data,
font_mononoki_compressed_data, font_mononoki_compressed_data,
font_ptMono_compressed_data, font_ptMono_compressed_data,

View file

@ -23,29 +23,29 @@
#ifndef _FONTS_H #ifndef _FONTS_H
#define _FONTS_H #define _FONTS_H
extern const unsigned int font_exo_compressed_size; extern const unsigned int font_exo_compressed_size;
extern const unsigned int font_exo_compressed_data[]; extern const unsigned char font_exo_compressed_data[];
extern const unsigned int font_liberationSans_compressed_size; extern const unsigned int font_liberationSans_compressed_size;
extern const unsigned int font_liberationSans_compressed_data[]; extern const unsigned char font_liberationSans_compressed_data[];
extern const unsigned int font_mononoki_compressed_size; extern const unsigned int font_mononoki_compressed_size;
extern const unsigned int font_mononoki_compressed_data[]; extern const unsigned char font_mononoki_compressed_data[];
extern const unsigned int font_plexSans_compressed_size; extern const unsigned int font_plexSans_compressed_size;
extern const unsigned int font_plexSans_compressed_data[]; extern const unsigned char font_plexSans_compressed_data[];
extern const unsigned int font_plexMono_compressed_size; extern const unsigned int font_plexMono_compressed_size;
extern const unsigned int font_plexMono_compressed_data[]; extern const unsigned char font_plexMono_compressed_data[];
extern const unsigned int font_proggyClean_compressed_size; extern const unsigned int font_proggyClean_compressed_size;
extern const unsigned int font_proggyClean_compressed_data[]; extern const unsigned char font_proggyClean_compressed_data[];
extern const unsigned int font_ptMono_compressed_size; extern const unsigned int font_ptMono_compressed_size;
extern const unsigned int font_ptMono_compressed_data[]; extern const unsigned char font_ptMono_compressed_data[];
extern const unsigned int font_unifont_compressed_size; extern const unsigned int font_unifont_compressed_size;
extern const unsigned int font_unifont_compressed_data[]; extern const unsigned char font_unifont_compressed_data[];
extern const unsigned int iconFont_compressed_size; extern const unsigned int iconFont_compressed_size;
extern const unsigned int iconFont_compressed_data[]; extern const unsigned char iconFont_compressed_data[];
extern const unsigned int furIcons_compressed_size; extern const unsigned int furIcons_compressed_size;
extern const unsigned int furIcons_compressed_data[]; extern const unsigned char furIcons_compressed_data[];
extern const unsigned int* builtinFont[]; extern const unsigned char* builtinFont[];
extern const unsigned int builtinFontLen[]; extern const unsigned int builtinFontLen[];
extern const unsigned int* builtinFontM[]; extern const unsigned char* builtinFontM[];
extern const unsigned int builtinFontMLen[]; extern const unsigned int builtinFontMLen[];
#endif #endif

125
src/gui/fontzlib.cpp Normal file
View file

@ -0,0 +1,125 @@
/**
* Furnace Tracker - multi-system chiptune tracker
* Copyright (C) 2021-2024 tildearrow and contributors
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "gui.h"
#include <zlib.h>
#define FONT_READ_SIZE 262144
struct InflateBlock {
unsigned char* buf;
size_t len;
size_t blockSize;
InflateBlock(size_t s) {
buf=new unsigned char[s];
len=s;
blockSize=0;
}
~InflateBlock() {
delete[] buf;
len=0;
}
};
ImFont* FurnaceGUI::addFontZlib(const void* data, size_t len, float size_pixels, const ImFontConfig* font_cfg, const ImWchar* glyph_ranges) {
z_stream zl;
memset(&zl,0,sizeof(z_stream));
logV("addFontZlib...");
zl.avail_in=len;
zl.next_in=(Bytef*)data;
zl.zalloc=NULL;
zl.zfree=NULL;
zl.opaque=NULL;
int nextErr;
nextErr=inflateInit(&zl);
if (nextErr!=Z_OK) {
if (zl.msg==NULL) {
logD("zlib error: unknown! %d",nextErr);
} else {
logD("zlib error: %s",zl.msg);
}
inflateEnd(&zl);
return NULL;
}
std::vector<InflateBlock*> blocks;
while (true) {
InflateBlock* ib=new InflateBlock(FONT_READ_SIZE);
zl.next_out=ib->buf;
zl.avail_out=ib->len;
nextErr=inflate(&zl,Z_SYNC_FLUSH);
if (nextErr!=Z_OK && nextErr!=Z_STREAM_END) {
if (zl.msg==NULL) {
logD("zlib error: unknown error! %d",nextErr);
} else {
logD("zlib inflate: %s",zl.msg);
}
for (InflateBlock* i: blocks) delete i;
blocks.clear();
delete ib;
inflateEnd(&zl);
return NULL;
}
ib->blockSize=ib->len-zl.avail_out;
blocks.push_back(ib);
if (nextErr==Z_STREAM_END) {
break;
}
}
nextErr=inflateEnd(&zl);
if (nextErr!=Z_OK) {
if (zl.msg==NULL) {
logD("zlib end error: unknown error! %d",nextErr);
} else {
logD("zlib end: %s",zl.msg);
}
for (InflateBlock* i: blocks) delete i;
blocks.clear();
return NULL;
}
size_t finalSize=0;
size_t curSeek=0;
for (InflateBlock* i: blocks) {
finalSize+=i->blockSize;
}
if (finalSize<1) {
logD("compressed too small!");
lastError="file too small";
for (InflateBlock* i: blocks) delete i;
blocks.clear();
return NULL;
}
unsigned char* finalData=new unsigned char[finalSize];
for (InflateBlock* i: blocks) {
memcpy(&finalData[curSeek],i->buf,i->blockSize);
curSeek+=i->blockSize;
delete i;
}
blocks.clear();
len=finalSize;
ImFontConfig fontConfig=(font_cfg==NULL)?ImFontConfig():(*font_cfg);
fontConfig.FontDataOwnedByAtlas=true;
return ImGui::GetIO().Fonts->AddFontFromMemoryTTF(finalData,finalSize,size_pixels,&fontConfig,glyph_ranges);
}

View file

@ -2779,6 +2779,8 @@ class FurnaceGUI {
bool initRender(); bool initRender();
bool quitRender(); bool quitRender();
ImFont* addFontZlib(const void* data, size_t len, float size_pixels, const ImFontConfig* font_cfg=NULL, const ImWchar* glyph_ranges=NULL);
const char* getSystemName(DivSystem which); const char* getSystemName(DivSystem which);
const char* getSystemPartNumber(DivSystem sys, DivConfig& flags); const char* getSystemPartNumber(DivSystem sys, DivConfig& flags);

View file

@ -5694,7 +5694,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
if ((mainFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(settings.mainFontPath.c_str(),MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) { if ((mainFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(settings.mainFontPath.c_str(),MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) {
logW("could not load UI font! reverting to default font"); logW("could not load UI font! reverting to default font");
settings.mainFont=0; settings.mainFont=0;
if ((mainFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFont[settings.mainFont],builtinFontLen[settings.mainFont],MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) { if ((mainFont=addFontZlib(builtinFont[settings.mainFont],builtinFontLen[settings.mainFont],MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) {
logE("could not load UI font! falling back to Proggy Clean."); logE("could not load UI font! falling back to Proggy Clean.");
mainFont=ImGui::GetIO().Fonts->AddFontDefault(); mainFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
@ -5705,7 +5705,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
if ((mainFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(SYSTEM_FONT_PATH_3,MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) { if ((mainFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(SYSTEM_FONT_PATH_3,MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) {
logW("could not load UI font! reverting to default font"); logW("could not load UI font! reverting to default font");
settings.mainFont=0; settings.mainFont=0;
if ((mainFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFont[settings.mainFont],builtinFontLen[settings.mainFont],MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) { if ((mainFont=addFontZlib(builtinFont[settings.mainFont],builtinFontLen[settings.mainFont],MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) {
logE("could not load UI font! falling back to Proggy Clean."); logE("could not load UI font! falling back to Proggy Clean.");
mainFont=ImGui::GetIO().Fonts->AddFontDefault(); mainFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
@ -5713,16 +5713,16 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
} }
} }
} else { } else {
if ((mainFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFont[settings.mainFont],builtinFontLen[settings.mainFont],MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) { if ((mainFont=addFontZlib(builtinFont[settings.mainFont],builtinFontLen[settings.mainFont],MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fontConf,fontRange))==NULL) {
logE("could not load UI font! falling back to Proggy Clean."); logE("could not load UI font! falling back to Proggy Clean.");
mainFont=ImGui::GetIO().Fonts->AddFontDefault(); mainFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
} }
// two fallback fonts // two fallback fonts
mainFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(font_liberationSans_compressed_data,font_liberationSans_compressed_size,MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fc1,fontRange); mainFont=addFontZlib(font_liberationSans_compressed_data,font_liberationSans_compressed_size,MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fc1,fontRange);
if (settings.loadJapanese || settings.loadChinese || settings.loadChineseTraditional || settings.loadKorean) { if (settings.loadJapanese || settings.loadChinese || settings.loadChineseTraditional || settings.loadKorean) {
mainFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(font_unifont_compressed_data,font_unifont_compressed_size,MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fc1,fontRange); mainFont=addFontZlib(font_unifont_compressed_data,font_unifont_compressed_size,MAX(1,e->getConfInt("mainFontSize",18)*dpiScale),&fc1,fontRange);
} }
ImFontConfig fc; ImFontConfig fc;
@ -5732,12 +5732,12 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
fc.PixelSnapH=true; fc.PixelSnapH=true;
fc.GlyphMinAdvanceX=e->getConfInt("iconSize",16)*dpiScale; fc.GlyphMinAdvanceX=e->getConfInt("iconSize",16)*dpiScale;
static const ImWchar fontRangeIcon[]={ICON_MIN_FA,ICON_MAX_FA,0}; static const ImWchar fontRangeIcon[]={ICON_MIN_FA,ICON_MAX_FA,0};
if ((iconFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(iconFont_compressed_data,iconFont_compressed_size,MAX(1,e->getConfInt("iconSize",16)*dpiScale),&fc,fontRangeIcon))==NULL) { if ((iconFont=addFontZlib(iconFont_compressed_data,iconFont_compressed_size,MAX(1,e->getConfInt("iconSize",16)*dpiScale),&fc,fontRangeIcon))==NULL) {
logE("could not load icon font!"); logE("could not load icon font!");
} }
static const ImWchar fontRangeFurIcon[]={ICON_MIN_FUR,ICON_MAX_FUR,0}; static const ImWchar fontRangeFurIcon[]={ICON_MIN_FUR,ICON_MAX_FUR,0};
if ((furIconFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(furIcons_compressed_data,furIcons_compressed_size,MAX(1,e->getConfInt("iconSize",16)*dpiScale),&fc,fontRangeFurIcon))==NULL) { if ((furIconFont=addFontZlib(furIcons_compressed_data,furIcons_compressed_size,MAX(1,e->getConfInt("iconSize",16)*dpiScale),&fc,fontRangeFurIcon))==NULL) {
logE("could not load Furnace icons font!"); logE("could not load Furnace icons font!");
} }
@ -5749,7 +5749,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
if ((patFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(settings.patFontPath.c_str(),MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) { if ((patFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(settings.patFontPath.c_str(),MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) {
logW("could not load pattern font! reverting to default font"); logW("could not load pattern font! reverting to default font");
settings.patFont=0; settings.patFont=0;
if ((patFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFontM[settings.patFont],builtinFontMLen[settings.patFont],MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) { if ((patFont=addFontZlib(builtinFontM[settings.patFont],builtinFontMLen[settings.patFont],MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) {
logE("could not load pattern font! falling back to Proggy Clean."); logE("could not load pattern font! falling back to Proggy Clean.");
patFont=ImGui::GetIO().Fonts->AddFontDefault(); patFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
@ -5760,7 +5760,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
if ((patFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(SYSTEM_PAT_FONT_PATH_3,MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) { if ((patFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(SYSTEM_PAT_FONT_PATH_3,MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) {
logW("could not load pattern font! reverting to default font"); logW("could not load pattern font! reverting to default font");
settings.patFont=0; settings.patFont=0;
if ((patFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFontM[settings.patFont],builtinFontMLen[settings.patFont],MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) { if ((patFont=addFontZlib(builtinFontM[settings.patFont],builtinFontMLen[settings.patFont],MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) {
logE("could not load pattern font! falling back to Proggy Clean."); logE("could not load pattern font! falling back to Proggy Clean.");
patFont=ImGui::GetIO().Fonts->AddFontDefault(); patFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
@ -5768,7 +5768,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
} }
} }
} else { } else {
if ((patFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFontM[settings.patFont],builtinFontMLen[settings.patFont],MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) { if ((patFont=addFontZlib(builtinFontM[settings.patFont],builtinFontMLen[settings.patFont],MAX(1,e->getConfInt("patFontSize",18)*dpiScale),&fontConfP,upTo800))==NULL) {
logE("could not load pattern font!"); logE("could not load pattern font!");
patFont=ImGui::GetIO().Fonts->AddFontDefault(); patFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
@ -5778,7 +5778,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
// 0x39B = Λ // 0x39B = Λ
static const ImWchar bigFontRange[]={0x20,0xFF,0x39b,0x39b,0}; static const ImWchar bigFontRange[]={0x20,0xFF,0x39b,0x39b,0};
if ((bigFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(font_plexSans_compressed_data,font_plexSans_compressed_size,MAX(1,40*dpiScale),&fontConfB,bigFontRange))==NULL) { if ((bigFont=addFontZlib(font_plexSans_compressed_data,font_plexSans_compressed_size,MAX(1,40*dpiScale),&fontConfB,bigFontRange))==NULL) {
logE("could not load big UI font!"); logE("could not load big UI font!");
} }
@ -5790,7 +5790,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
if ((headFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(settings.headFontPath.c_str(),MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) { if ((headFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(settings.headFontPath.c_str(),MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) {
logW("could not load header font! reverting to default font"); logW("could not load header font! reverting to default font");
settings.headFont=0; settings.headFont=0;
if ((headFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFont[settings.headFont],builtinFontLen[settings.headFont],MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) { if ((headFont=addFontZlib(builtinFont[settings.headFont],builtinFontLen[settings.headFont],MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) {
logE("could not load header font! falling back to IBM Plex Sans."); logE("could not load header font! falling back to IBM Plex Sans.");
headFont=ImGui::GetIO().Fonts->AddFontDefault(); headFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
@ -5801,7 +5801,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
if ((headFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(SYSTEM_HEAD_FONT_PATH_3,MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) { if ((headFont=ImGui::GetIO().Fonts->AddFontFromFileTTF(SYSTEM_HEAD_FONT_PATH_3,MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) {
logW("could not load header font! reverting to default font"); logW("could not load header font! reverting to default font");
settings.headFont=0; settings.headFont=0;
if ((headFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFont[settings.headFont],builtinFontLen[settings.headFont],MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) { if ((headFont=addFontZlib(builtinFont[settings.headFont],builtinFontLen[settings.headFont],MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) {
logE("could not load header font! falling back to IBM Plex Sans."); logE("could not load header font! falling back to IBM Plex Sans.");
headFont=ImGui::GetIO().Fonts->AddFontDefault(); headFont=ImGui::GetIO().Fonts->AddFontDefault();
} }
@ -5809,7 +5809,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
} }
} }
} else { } else {
if ((headFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(builtinFont[settings.headFont],builtinFontLen[settings.headFont],MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) { if ((headFont=addFontZlib(builtinFont[settings.headFont],builtinFontLen[settings.headFont],MAX(1,e->getConfInt("headFontSize",27)*dpiScale),&fontConfH,upTo800))==NULL) {
logE("could not load header font!"); logE("could not load header font!");
headFont=ImGui::GetIO().Fonts->AddFontDefault(); headFont=ImGui::GetIO().Fonts->AddFontDefault();
} }