/* SPDX-License-Identifier: MIT * unescape_html: decode every HTML character reference in UTF-8 text, the way * Python's html.unescape does, except that references to control characters and * noncharacters (such as  or ￿) decode to that code point instead of * being deleted. * * One self-contained C++ file, no standard library. The entity table (Python's * html.entities.html5, 2,231 names, digest-pinned) is injected at the @@TABLE@@ * marker by gen_table_cpp.py. * * Memory layout (20 pages = 1,310,720 bytes): one buffer of 1,258,304 bytes. * Output is written from buffer[0]; input is read from buffer + GAP, where * GAP = 209,728. The output can outgrow the consumed input by at most * floor(1 MiB / 5) = 209,715 bytes (worst case ≫⃒, 5 bytes -> 6), so the * write pointer never reaches unread input. Plus table and 16 KiB stack. * * Build: * python3 gen_table_cpp.py unescape.cpp build/unescape_full.cpp * zig c++ -target wasm32-freestanding -O2 -fno-exceptions -fno-rtti -nostdlib \ * -Wl,--no-entry -Wl,--export-memory -Wl,-z,stack-size=16384 \ * -Wl,--initial-memory=1310720 -Wl,--max-memory=1310720 \ * -Wl,--export=input_ptr -Wl,--export=input_utf8_cap \ * -Wl,--export=output_utf8_cap -Wl,--export=render \ * -Wl,--strip-all build/unescape_full.cpp -o unescape.wasm */ #include static constexpr uint32_t GAP = 209728; static constexpr uint32_t INPUT_CAP = 1048576; /* floor(INPUT_CAP/5)*6 + INPUT_CAP%5: the proven maximum output size. */ static constexpr uint32_t OUTPUT_CAP = 1258291; static unsigned char buffer[GAP + INPUT_CAP]; static uint32_t out_len = 0; extern "C" uint32_t input_ptr() { return (uint32_t)(buffer + GAP); } extern "C" uint32_t input_utf8_cap() { return INPUT_CAP; } extern "C" uint32_t output_utf8_cap() { return OUTPUT_CAP; } /* Windows-1252 remapping for references to 0x80-0x9F; 0 means keep the code point. */ static const uint32_t c1[32] = {0x20AC, 0, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0, 0x017D, 0, 0, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0, 0x017E, 0x0178}; static inline void emit_byte(uint8_t b) { buffer[out_len++] = b; } static inline void emit(const unsigned char* p, uint32_t n) { for (uint32_t k = 0; k < n; k++) buffer[out_len++] = p[k]; } static void emit_code_point(uint32_t cp) { if (cp < 0x80) { emit_byte((uint8_t)cp); } else if (cp < 0x800) { emit_byte((uint8_t)(0xC0 | (cp >> 6))); emit_byte((uint8_t)(0x80 | (cp & 0x3F))); } else if (cp < 0x10000) { emit_byte((uint8_t)(0xE0 | (cp >> 12))); emit_byte((uint8_t)(0x80 | ((cp >> 6) & 0x3F))); emit_byte((uint8_t)(0x80 | (cp & 0x3F))); } else { emit_byte((uint8_t)(0xF0 | (cp >> 18))); emit_byte((uint8_t)(0x80 | ((cp >> 12) & 0x3F))); emit_byte((uint8_t)(0x80 | ((cp >> 6) & 0x3F))); emit_byte((uint8_t)(0x80 | (cp & 0x3F))); } } /* The reference's named character class: anything but \t \n \f space < & # ;. */ static inline bool name_char(uint8_t c) { return c != '\t' && c != '\n' && c != 0x0C && c != ' ' && c != '<' && c != '&' && c != '#' && c != ';'; } static const unsigned char table_blob[] = { 65, 69, 108, 105, 103, 195, 134, 65, 69, 108, 105, 103, 59, 195, 134, 65, 77, 80, 38, 65, 77, 80, 59, 38, 65, 97, 99, 117, 116, 101, 195, 129, 65, 97, 99, 117, 116, 101, 59, 195, 129, 65, 98, 114, 101, 118, 101, 59, 196, 130, 65, 99, 105, 114, 99, 195, 130, 65, 99, 105, 114, 99, 59, 195, 130, 65, 99, 121, 59, 208, 144, 65, 102, 114, 59, 240, 157, 148, 132, 65, 103, 114, 97, 118, 101, 195, 128, 65, 103, 114, 97, 118, 101, 59, 195, 128, 65, 108, 112, 104, 97, 59, 206, 145, 65, 109, 97, 99, 114, 59, 196, 128, 65, 110, 100, 59, 226, 169, 147, 65, 111, 103, 111, 110, 59, 196, 132, 65, 111, 112, 102, 59, 240, 157, 148, 184, 65, 112, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 226, 129, 161, 65, 114, 105, 110, 103, 195, 133, 65, 114, 105, 110, 103, 59, 195, 133, 65, 115, 99, 114, 59, 240, 157, 146, 156, 65, 115, 115, 105, 103, 110, 59, 226, 137, 148, 65, 116, 105, 108, 100, 101, 195, 131, 65, 116, 105, 108, 100, 101, 59, 195, 131, 65, 117, 109, 108, 195, 132, 65, 117, 109, 108, 59, 195, 132, 66, 97, 99, 107, 115, 108, 97, 115, 104, 59, 226, 136, 150, 66, 97, 114, 118, 59, 226, 171, 167, 66, 97, 114, 119, 101, 100, 59, 226, 140, 134, 66, 99, 121, 59, 208, 145, 66, 101, 99, 97, 117, 115, 101, 59, 226, 136, 181, 66, 101, 114, 110, 111, 117, 108, 108, 105, 115, 59, 226, 132, 172, 66, 101, 116, 97, 59, 206, 146, 66, 102, 114, 59, 240, 157, 148, 133, 66, 111, 112, 102, 59, 240, 157, 148, 185, 66, 114, 101, 118, 101, 59, 203, 152, 66, 115, 99, 114, 59, 226, 132, 172, 66, 117, 109, 112, 101, 113, 59, 226, 137, 142, 67, 72, 99, 121, 59, 208, 167, 67, 79, 80, 89, 194, 169, 67, 79, 80, 89, 59, 194, 169, 67, 97, 99, 117, 116, 101, 59, 196, 134, 67, 97, 112, 59, 226, 139, 146, 67, 97, 112, 105, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 226, 133, 133, 67, 97, 121, 108, 101, 121, 115, 59, 226, 132, 173, 67, 99, 97, 114, 111, 110, 59, 196, 140, 67, 99, 101, 100, 105, 108, 195, 135, 67, 99, 101, 100, 105, 108, 59, 195, 135, 67, 99, 105, 114, 99, 59, 196, 136, 67, 99, 111, 110, 105, 110, 116, 59, 226, 136, 176, 67, 100, 111, 116, 59, 196, 138, 67, 101, 100, 105, 108, 108, 97, 59, 194, 184, 67, 101, 110, 116, 101, 114, 68, 111, 116, 59, 194, 183, 67, 102, 114, 59, 226, 132, 173, 67, 104, 105, 59, 206, 167, 67, 105, 114, 99, 108, 101, 68, 111, 116, 59, 226, 138, 153, 67, 105, 114, 99, 108, 101, 77, 105, 110, 117, 115, 59, 226, 138, 150, 67, 105, 114, 99, 108, 101, 80, 108, 117, 115, 59, 226, 138, 149, 67, 105, 114, 99, 108, 101, 84, 105, 109, 101, 115, 59, 226, 138, 151, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 226, 136, 178, 67, 108, 111, 115, 101, 67, 117, 114, 108, 121, 68, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 226, 128, 157, 67, 108, 111, 115, 101, 67, 117, 114, 108, 121, 81, 117, 111, 116, 101, 59, 226, 128, 153, 67, 111, 108, 111, 110, 59, 226, 136, 183, 67, 111, 108, 111, 110, 101, 59, 226, 169, 180, 67, 111, 110, 103, 114, 117, 101, 110, 116, 59, 226, 137, 161, 67, 111, 110, 105, 110, 116, 59, 226, 136, 175, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 226, 136, 174, 67, 111, 112, 102, 59, 226, 132, 130, 67, 111, 112, 114, 111, 100, 117, 99, 116, 59, 226, 136, 144, 67, 111, 117, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 226, 136, 179, 67, 114, 111, 115, 115, 59, 226, 168, 175, 67, 115, 99, 114, 59, 240, 157, 146, 158, 67, 117, 112, 59, 226, 139, 147, 67, 117, 112, 67, 97, 112, 59, 226, 137, 141, 68, 68, 59, 226, 133, 133, 68, 68, 111, 116, 114, 97, 104, 100, 59, 226, 164, 145, 68, 74, 99, 121, 59, 208, 130, 68, 83, 99, 121, 59, 208, 133, 68, 90, 99, 121, 59, 208, 143, 68, 97, 103, 103, 101, 114, 59, 226, 128, 161, 68, 97, 114, 114, 59, 226, 134, 161, 68, 97, 115, 104, 118, 59, 226, 171, 164, 68, 99, 97, 114, 111, 110, 59, 196, 142, 68, 99, 121, 59, 208, 148, 68, 101, 108, 59, 226, 136, 135, 68, 101, 108, 116, 97, 59, 206, 148, 68, 102, 114, 59, 240, 157, 148, 135, 68, 105, 97, 99, 114, 105, 116, 105, 99, 97, 108, 65, 99, 117, 116, 101, 59, 194, 180, 68, 105, 97, 99, 114, 105, 116, 105, 99, 97, 108, 68, 111, 116, 59, 203, 153, 68, 105, 97, 99, 114, 105, 116, 105, 99, 97, 108, 68, 111, 117, 98, 108, 101, 65, 99, 117, 116, 101, 59, 203, 157, 68, 105, 97, 99, 114, 105, 116, 105, 99, 97, 108, 71, 114, 97, 118, 101, 59, 96, 68, 105, 97, 99, 114, 105, 116, 105, 99, 97, 108, 84, 105, 108, 100, 101, 59, 203, 156, 68, 105, 97, 109, 111, 110, 100, 59, 226, 139, 132, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 226, 133, 134, 68, 111, 112, 102, 59, 240, 157, 148, 187, 68, 111, 116, 59, 194, 168, 68, 111, 116, 68, 111, 116, 59, 226, 131, 156, 68, 111, 116, 69, 113, 117, 97, 108, 59, 226, 137, 144, 68, 111, 117, 98, 108, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 226, 136, 175, 68, 111, 117, 98, 108, 101, 68, 111, 116, 59, 194, 168, 68, 111, 117, 98, 108, 101, 68, 111, 119, 110, 65, 114, 114, 111, 119, 59, 226, 135, 147, 68, 111, 117, 98, 108, 101, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 135, 144, 68, 111, 117, 98, 108, 101, 76, 101, 102, 116, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 135, 148, 68, 111, 117, 98, 108, 101, 76, 101, 102, 116, 84, 101, 101, 59, 226, 171, 164, 68, 111, 117, 98, 108, 101, 76, 111, 110, 103, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 159, 184, 68, 111, 117, 98, 108, 101, 76, 111, 110, 103, 76, 101, 102, 116, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 159, 186, 68, 111, 117, 98, 108, 101, 76, 111, 110, 103, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 159, 185, 68, 111, 117, 98, 108, 101, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 135, 146, 68, 111, 117, 98, 108, 101, 82, 105, 103, 104, 116, 84, 101, 101, 59, 226, 138, 168, 68, 111, 117, 98, 108, 101, 85, 112, 65, 114, 114, 111, 119, 59, 226, 135, 145, 68, 111, 117, 98, 108, 101, 85, 112, 68, 111, 119, 110, 65, 114, 114, 111, 119, 59, 226, 135, 149, 68, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 226, 136, 165, 68, 111, 119, 110, 65, 114, 114, 111, 119, 59, 226, 134, 147, 68, 111, 119, 110, 65, 114, 114, 111, 119, 66, 97, 114, 59, 226, 164, 147, 68, 111, 119, 110, 65, 114, 114, 111, 119, 85, 112, 65, 114, 114, 111, 119, 59, 226, 135, 181, 68, 111, 119, 110, 66, 114, 101, 118, 101, 59, 204, 145, 68, 111, 119, 110, 76, 101, 102, 116, 82, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 226, 165, 144, 68, 111, 119, 110, 76, 101, 102, 116, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 158, 68, 111, 119, 110, 76, 101, 102, 116, 86, 101, 99, 116, 111, 114, 59, 226, 134, 189, 68, 111, 119, 110, 76, 101, 102, 116, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 150, 68, 111, 119, 110, 82, 105, 103, 104, 116, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 159, 68, 111, 119, 110, 82, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 226, 135, 129, 68, 111, 119, 110, 82, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 151, 68, 111, 119, 110, 84, 101, 101, 59, 226, 138, 164, 68, 111, 119, 110, 84, 101, 101, 65, 114, 114, 111, 119, 59, 226, 134, 167, 68, 111, 119, 110, 97, 114, 114, 111, 119, 59, 226, 135, 147, 68, 115, 99, 114, 59, 240, 157, 146, 159, 68, 115, 116, 114, 111, 107, 59, 196, 144, 69, 78, 71, 59, 197, 138, 69, 84, 72, 195, 144, 69, 84, 72, 59, 195, 144, 69, 97, 99, 117, 116, 101, 195, 137, 69, 97, 99, 117, 116, 101, 59, 195, 137, 69, 99, 97, 114, 111, 110, 59, 196, 154, 69, 99, 105, 114, 99, 195, 138, 69, 99, 105, 114, 99, 59, 195, 138, 69, 99, 121, 59, 208, 173, 69, 100, 111, 116, 59, 196, 150, 69, 102, 114, 59, 240, 157, 148, 136, 69, 103, 114, 97, 118, 101, 195, 136, 69, 103, 114, 97, 118, 101, 59, 195, 136, 69, 108, 101, 109, 101, 110, 116, 59, 226, 136, 136, 69, 109, 97, 99, 114, 59, 196, 146, 69, 109, 112, 116, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 226, 151, 187, 69, 109, 112, 116, 121, 86, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 226, 150, 171, 69, 111, 103, 111, 110, 59, 196, 152, 69, 111, 112, 102, 59, 240, 157, 148, 188, 69, 112, 115, 105, 108, 111, 110, 59, 206, 149, 69, 113, 117, 97, 108, 59, 226, 169, 181, 69, 113, 117, 97, 108, 84, 105, 108, 100, 101, 59, 226, 137, 130, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 226, 135, 140, 69, 115, 99, 114, 59, 226, 132, 176, 69, 115, 105, 109, 59, 226, 169, 179, 69, 116, 97, 59, 206, 151, 69, 117, 109, 108, 195, 139, 69, 117, 109, 108, 59, 195, 139, 69, 120, 105, 115, 116, 115, 59, 226, 136, 131, 69, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 226, 133, 135, 70, 99, 121, 59, 208, 164, 70, 102, 114, 59, 240, 157, 148, 137, 70, 105, 108, 108, 101, 100, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 226, 151, 188, 70, 105, 108, 108, 101, 100, 86, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 226, 150, 170, 70, 111, 112, 102, 59, 240, 157, 148, 189, 70, 111, 114, 65, 108, 108, 59, 226, 136, 128, 70, 111, 117, 114, 105, 101, 114, 116, 114, 102, 59, 226, 132, 177, 70, 115, 99, 114, 59, 226, 132, 177, 71, 74, 99, 121, 59, 208, 131, 71, 84, 62, 71, 84, 59, 62, 71, 97, 109, 109, 97, 59, 206, 147, 71, 97, 109, 109, 97, 100, 59, 207, 156, 71, 98, 114, 101, 118, 101, 59, 196, 158, 71, 99, 101, 100, 105, 108, 59, 196, 162, 71, 99, 105, 114, 99, 59, 196, 156, 71, 99, 121, 59, 208, 147, 71, 100, 111, 116, 59, 196, 160, 71, 102, 114, 59, 240, 157, 148, 138, 71, 103, 59, 226, 139, 153, 71, 111, 112, 102, 59, 240, 157, 148, 190, 71, 114, 101, 97, 116, 101, 114, 69, 113, 117, 97, 108, 59, 226, 137, 165, 71, 114, 101, 97, 116, 101, 114, 69, 113, 117, 97, 108, 76, 101, 115, 115, 59, 226, 139, 155, 71, 114, 101, 97, 116, 101, 114, 70, 117, 108, 108, 69, 113, 117, 97, 108, 59, 226, 137, 167, 71, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 226, 170, 162, 71, 114, 101, 97, 116, 101, 114, 76, 101, 115, 115, 59, 226, 137, 183, 71, 114, 101, 97, 116, 101, 114, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 169, 190, 71, 114, 101, 97, 116, 101, 114, 84, 105, 108, 100, 101, 59, 226, 137, 179, 71, 115, 99, 114, 59, 240, 157, 146, 162, 71, 116, 59, 226, 137, 171, 72, 65, 82, 68, 99, 121, 59, 208, 170, 72, 97, 99, 101, 107, 59, 203, 135, 72, 97, 116, 59, 94, 72, 99, 105, 114, 99, 59, 196, 164, 72, 102, 114, 59, 226, 132, 140, 72, 105, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 226, 132, 139, 72, 111, 112, 102, 59, 226, 132, 141, 72, 111, 114, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 226, 148, 128, 72, 115, 99, 114, 59, 226, 132, 139, 72, 115, 116, 114, 111, 107, 59, 196, 166, 72, 117, 109, 112, 68, 111, 119, 110, 72, 117, 109, 112, 59, 226, 137, 142, 72, 117, 109, 112, 69, 113, 117, 97, 108, 59, 226, 137, 143, 73, 69, 99, 121, 59, 208, 149, 73, 74, 108, 105, 103, 59, 196, 178, 73, 79, 99, 121, 59, 208, 129, 73, 97, 99, 117, 116, 101, 195, 141, 73, 97, 99, 117, 116, 101, 59, 195, 141, 73, 99, 105, 114, 99, 195, 142, 73, 99, 105, 114, 99, 59, 195, 142, 73, 99, 121, 59, 208, 152, 73, 100, 111, 116, 59, 196, 176, 73, 102, 114, 59, 226, 132, 145, 73, 103, 114, 97, 118, 101, 195, 140, 73, 103, 114, 97, 118, 101, 59, 195, 140, 73, 109, 59, 226, 132, 145, 73, 109, 97, 99, 114, 59, 196, 170, 73, 109, 97, 103, 105, 110, 97, 114, 121, 73, 59, 226, 133, 136, 73, 109, 112, 108, 105, 101, 115, 59, 226, 135, 146, 73, 110, 116, 59, 226, 136, 172, 73, 110, 116, 101, 103, 114, 97, 108, 59, 226, 136, 171, 73, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 226, 139, 130, 73, 110, 118, 105, 115, 105, 98, 108, 101, 67, 111, 109, 109, 97, 59, 226, 129, 163, 73, 110, 118, 105, 115, 105, 98, 108, 101, 84, 105, 109, 101, 115, 59, 226, 129, 162, 73, 111, 103, 111, 110, 59, 196, 174, 73, 111, 112, 102, 59, 240, 157, 149, 128, 73, 111, 116, 97, 59, 206, 153, 73, 115, 99, 114, 59, 226, 132, 144, 73, 116, 105, 108, 100, 101, 59, 196, 168, 73, 117, 107, 99, 121, 59, 208, 134, 73, 117, 109, 108, 195, 143, 73, 117, 109, 108, 59, 195, 143, 74, 99, 105, 114, 99, 59, 196, 180, 74, 99, 121, 59, 208, 153, 74, 102, 114, 59, 240, 157, 148, 141, 74, 111, 112, 102, 59, 240, 157, 149, 129, 74, 115, 99, 114, 59, 240, 157, 146, 165, 74, 115, 101, 114, 99, 121, 59, 208, 136, 74, 117, 107, 99, 121, 59, 208, 132, 75, 72, 99, 121, 59, 208, 165, 75, 74, 99, 121, 59, 208, 140, 75, 97, 112, 112, 97, 59, 206, 154, 75, 99, 101, 100, 105, 108, 59, 196, 182, 75, 99, 121, 59, 208, 154, 75, 102, 114, 59, 240, 157, 148, 142, 75, 111, 112, 102, 59, 240, 157, 149, 130, 75, 115, 99, 114, 59, 240, 157, 146, 166, 76, 74, 99, 121, 59, 208, 137, 76, 84, 60, 76, 84, 59, 60, 76, 97, 99, 117, 116, 101, 59, 196, 185, 76, 97, 109, 98, 100, 97, 59, 206, 155, 76, 97, 110, 103, 59, 226, 159, 170, 76, 97, 112, 108, 97, 99, 101, 116, 114, 102, 59, 226, 132, 146, 76, 97, 114, 114, 59, 226, 134, 158, 76, 99, 97, 114, 111, 110, 59, 196, 189, 76, 99, 101, 100, 105, 108, 59, 196, 187, 76, 99, 121, 59, 208, 155, 76, 101, 102, 116, 65, 110, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 226, 159, 168, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 134, 144, 76, 101, 102, 116, 65, 114, 114, 111, 119, 66, 97, 114, 59, 226, 135, 164, 76, 101, 102, 116, 65, 114, 114, 111, 119, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 135, 134, 76, 101, 102, 116, 67, 101, 105, 108, 105, 110, 103, 59, 226, 140, 136, 76, 101, 102, 116, 68, 111, 117, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 226, 159, 166, 76, 101, 102, 116, 68, 111, 119, 110, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 161, 76, 101, 102, 116, 68, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 226, 135, 131, 76, 101, 102, 116, 68, 111, 119, 110, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 153, 76, 101, 102, 116, 70, 108, 111, 111, 114, 59, 226, 140, 138, 76, 101, 102, 116, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 134, 148, 76, 101, 102, 116, 82, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 226, 165, 142, 76, 101, 102, 116, 84, 101, 101, 59, 226, 138, 163, 76, 101, 102, 116, 84, 101, 101, 65, 114, 114, 111, 119, 59, 226, 134, 164, 76, 101, 102, 116, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 154, 76, 101, 102, 116, 84, 114, 105, 97, 110, 103, 108, 101, 59, 226, 138, 178, 76, 101, 102, 116, 84, 114, 105, 97, 110, 103, 108, 101, 66, 97, 114, 59, 226, 167, 143, 76, 101, 102, 116, 84, 114, 105, 97, 110, 103, 108, 101, 69, 113, 117, 97, 108, 59, 226, 138, 180, 76, 101, 102, 116, 85, 112, 68, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 226, 165, 145, 76, 101, 102, 116, 85, 112, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 160, 76, 101, 102, 116, 85, 112, 86, 101, 99, 116, 111, 114, 59, 226, 134, 191, 76, 101, 102, 116, 85, 112, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 152, 76, 101, 102, 116, 86, 101, 99, 116, 111, 114, 59, 226, 134, 188, 76, 101, 102, 116, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 146, 76, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 135, 144, 76, 101, 102, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 135, 148, 76, 101, 115, 115, 69, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 226, 139, 154, 76, 101, 115, 115, 70, 117, 108, 108, 69, 113, 117, 97, 108, 59, 226, 137, 166, 76, 101, 115, 115, 71, 114, 101, 97, 116, 101, 114, 59, 226, 137, 182, 76, 101, 115, 115, 76, 101, 115, 115, 59, 226, 170, 161, 76, 101, 115, 115, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 169, 189, 76, 101, 115, 115, 84, 105, 108, 100, 101, 59, 226, 137, 178, 76, 102, 114, 59, 240, 157, 148, 143, 76, 108, 59, 226, 139, 152, 76, 108, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 135, 154, 76, 109, 105, 100, 111, 116, 59, 196, 191, 76, 111, 110, 103, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 159, 181, 76, 111, 110, 103, 76, 101, 102, 116, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 159, 183, 76, 111, 110, 103, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 159, 182, 76, 111, 110, 103, 108, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 159, 184, 76, 111, 110, 103, 108, 101, 102, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 159, 186, 76, 111, 110, 103, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 159, 185, 76, 111, 112, 102, 59, 240, 157, 149, 131, 76, 111, 119, 101, 114, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 134, 153, 76, 111, 119, 101, 114, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 134, 152, 76, 115, 99, 114, 59, 226, 132, 146, 76, 115, 104, 59, 226, 134, 176, 76, 115, 116, 114, 111, 107, 59, 197, 129, 76, 116, 59, 226, 137, 170, 77, 97, 112, 59, 226, 164, 133, 77, 99, 121, 59, 208, 156, 77, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 226, 129, 159, 77, 101, 108, 108, 105, 110, 116, 114, 102, 59, 226, 132, 179, 77, 102, 114, 59, 240, 157, 148, 144, 77, 105, 110, 117, 115, 80, 108, 117, 115, 59, 226, 136, 147, 77, 111, 112, 102, 59, 240, 157, 149, 132, 77, 115, 99, 114, 59, 226, 132, 179, 77, 117, 59, 206, 156, 78, 74, 99, 121, 59, 208, 138, 78, 97, 99, 117, 116, 101, 59, 197, 131, 78, 99, 97, 114, 111, 110, 59, 197, 135, 78, 99, 101, 100, 105, 108, 59, 197, 133, 78, 99, 121, 59, 208, 157, 78, 101, 103, 97, 116, 105, 118, 101, 77, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 226, 128, 139, 78, 101, 103, 97, 116, 105, 118, 101, 84, 104, 105, 99, 107, 83, 112, 97, 99, 101, 59, 226, 128, 139, 78, 101, 103, 97, 116, 105, 118, 101, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 226, 128, 139, 78, 101, 103, 97, 116, 105, 118, 101, 86, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 226, 128, 139, 78, 101, 115, 116, 101, 100, 71, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 226, 137, 171, 78, 101, 115, 116, 101, 100, 76, 101, 115, 115, 76, 101, 115, 115, 59, 226, 137, 170, 78, 101, 119, 76, 105, 110, 101, 59, 10, 78, 102, 114, 59, 240, 157, 148, 145, 78, 111, 66, 114, 101, 97, 107, 59, 226, 129, 160, 78, 111, 110, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 194, 160, 78, 111, 112, 102, 59, 226, 132, 149, 78, 111, 116, 59, 226, 171, 172, 78, 111, 116, 67, 111, 110, 103, 114, 117, 101, 110, 116, 59, 226, 137, 162, 78, 111, 116, 67, 117, 112, 67, 97, 112, 59, 226, 137, 173, 78, 111, 116, 68, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 226, 136, 166, 78, 111, 116, 69, 108, 101, 109, 101, 110, 116, 59, 226, 136, 137, 78, 111, 116, 69, 113, 117, 97, 108, 59, 226, 137, 160, 78, 111, 116, 69, 113, 117, 97, 108, 84, 105, 108, 100, 101, 59, 226, 137, 130, 204, 184, 78, 111, 116, 69, 120, 105, 115, 116, 115, 59, 226, 136, 132, 78, 111, 116, 71, 114, 101, 97, 116, 101, 114, 59, 226, 137, 175, 78, 111, 116, 71, 114, 101, 97, 116, 101, 114, 69, 113, 117, 97, 108, 59, 226, 137, 177, 78, 111, 116, 71, 114, 101, 97, 116, 101, 114, 70, 117, 108, 108, 69, 113, 117, 97, 108, 59, 226, 137, 167, 204, 184, 78, 111, 116, 71, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 226, 137, 171, 204, 184, 78, 111, 116, 71, 114, 101, 97, 116, 101, 114, 76, 101, 115, 115, 59, 226, 137, 185, 78, 111, 116, 71, 114, 101, 97, 116, 101, 114, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 169, 190, 204, 184, 78, 111, 116, 71, 114, 101, 97, 116, 101, 114, 84, 105, 108, 100, 101, 59, 226, 137, 181, 78, 111, 116, 72, 117, 109, 112, 68, 111, 119, 110, 72, 117, 109, 112, 59, 226, 137, 142, 204, 184, 78, 111, 116, 72, 117, 109, 112, 69, 113, 117, 97, 108, 59, 226, 137, 143, 204, 184, 78, 111, 116, 76, 101, 102, 116, 84, 114, 105, 97, 110, 103, 108, 101, 59, 226, 139, 170, 78, 111, 116, 76, 101, 102, 116, 84, 114, 105, 97, 110, 103, 108, 101, 66, 97, 114, 59, 226, 167, 143, 204, 184, 78, 111, 116, 76, 101, 102, 116, 84, 114, 105, 97, 110, 103, 108, 101, 69, 113, 117, 97, 108, 59, 226, 139, 172, 78, 111, 116, 76, 101, 115, 115, 59, 226, 137, 174, 78, 111, 116, 76, 101, 115, 115, 69, 113, 117, 97, 108, 59, 226, 137, 176, 78, 111, 116, 76, 101, 115, 115, 71, 114, 101, 97, 116, 101, 114, 59, 226, 137, 184, 78, 111, 116, 76, 101, 115, 115, 76, 101, 115, 115, 59, 226, 137, 170, 204, 184, 78, 111, 116, 76, 101, 115, 115, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 169, 189, 204, 184, 78, 111, 116, 76, 101, 115, 115, 84, 105, 108, 100, 101, 59, 226, 137, 180, 78, 111, 116, 78, 101, 115, 116, 101, 100, 71, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 226, 170, 162, 204, 184, 78, 111, 116, 78, 101, 115, 116, 101, 100, 76, 101, 115, 115, 76, 101, 115, 115, 59, 226, 170, 161, 204, 184, 78, 111, 116, 80, 114, 101, 99, 101, 100, 101, 115, 59, 226, 138, 128, 78, 111, 116, 80, 114, 101, 99, 101, 100, 101, 115, 69, 113, 117, 97, 108, 59, 226, 170, 175, 204, 184, 78, 111, 116, 80, 114, 101, 99, 101, 100, 101, 115, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 139, 160, 78, 111, 116, 82, 101, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 226, 136, 140, 78, 111, 116, 82, 105, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 59, 226, 139, 171, 78, 111, 116, 82, 105, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 66, 97, 114, 59, 226, 167, 144, 204, 184, 78, 111, 116, 82, 105, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 69, 113, 117, 97, 108, 59, 226, 139, 173, 78, 111, 116, 83, 113, 117, 97, 114, 101, 83, 117, 98, 115, 101, 116, 59, 226, 138, 143, 204, 184, 78, 111, 116, 83, 113, 117, 97, 114, 101, 83, 117, 98, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 139, 162, 78, 111, 116, 83, 113, 117, 97, 114, 101, 83, 117, 112, 101, 114, 115, 101, 116, 59, 226, 138, 144, 204, 184, 78, 111, 116, 83, 113, 117, 97, 114, 101, 83, 117, 112, 101, 114, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 139, 163, 78, 111, 116, 83, 117, 98, 115, 101, 116, 59, 226, 138, 130, 226, 131, 146, 78, 111, 116, 83, 117, 98, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 138, 136, 78, 111, 116, 83, 117, 99, 99, 101, 101, 100, 115, 59, 226, 138, 129, 78, 111, 116, 83, 117, 99, 99, 101, 101, 100, 115, 69, 113, 117, 97, 108, 59, 226, 170, 176, 204, 184, 78, 111, 116, 83, 117, 99, 99, 101, 101, 100, 115, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 139, 161, 78, 111, 116, 83, 117, 99, 99, 101, 101, 100, 115, 84, 105, 108, 100, 101, 59, 226, 137, 191, 204, 184, 78, 111, 116, 83, 117, 112, 101, 114, 115, 101, 116, 59, 226, 138, 131, 226, 131, 146, 78, 111, 116, 83, 117, 112, 101, 114, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 138, 137, 78, 111, 116, 84, 105, 108, 100, 101, 59, 226, 137, 129, 78, 111, 116, 84, 105, 108, 100, 101, 69, 113, 117, 97, 108, 59, 226, 137, 132, 78, 111, 116, 84, 105, 108, 100, 101, 70, 117, 108, 108, 69, 113, 117, 97, 108, 59, 226, 137, 135, 78, 111, 116, 84, 105, 108, 100, 101, 84, 105, 108, 100, 101, 59, 226, 137, 137, 78, 111, 116, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 226, 136, 164, 78, 115, 99, 114, 59, 240, 157, 146, 169, 78, 116, 105, 108, 100, 101, 195, 145, 78, 116, 105, 108, 100, 101, 59, 195, 145, 78, 117, 59, 206, 157, 79, 69, 108, 105, 103, 59, 197, 146, 79, 97, 99, 117, 116, 101, 195, 147, 79, 97, 99, 117, 116, 101, 59, 195, 147, 79, 99, 105, 114, 99, 195, 148, 79, 99, 105, 114, 99, 59, 195, 148, 79, 99, 121, 59, 208, 158, 79, 100, 98, 108, 97, 99, 59, 197, 144, 79, 102, 114, 59, 240, 157, 148, 146, 79, 103, 114, 97, 118, 101, 195, 146, 79, 103, 114, 97, 118, 101, 59, 195, 146, 79, 109, 97, 99, 114, 59, 197, 140, 79, 109, 101, 103, 97, 59, 206, 169, 79, 109, 105, 99, 114, 111, 110, 59, 206, 159, 79, 111, 112, 102, 59, 240, 157, 149, 134, 79, 112, 101, 110, 67, 117, 114, 108, 121, 68, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 226, 128, 156, 79, 112, 101, 110, 67, 117, 114, 108, 121, 81, 117, 111, 116, 101, 59, 226, 128, 152, 79, 114, 59, 226, 169, 148, 79, 115, 99, 114, 59, 240, 157, 146, 170, 79, 115, 108, 97, 115, 104, 195, 152, 79, 115, 108, 97, 115, 104, 59, 195, 152, 79, 116, 105, 108, 100, 101, 195, 149, 79, 116, 105, 108, 100, 101, 59, 195, 149, 79, 116, 105, 109, 101, 115, 59, 226, 168, 183, 79, 117, 109, 108, 195, 150, 79, 117, 109, 108, 59, 195, 150, 79, 118, 101, 114, 66, 97, 114, 59, 226, 128, 190, 79, 118, 101, 114, 66, 114, 97, 99, 101, 59, 226, 143, 158, 79, 118, 101, 114, 66, 114, 97, 99, 107, 101, 116, 59, 226, 142, 180, 79, 118, 101, 114, 80, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 226, 143, 156, 80, 97, 114, 116, 105, 97, 108, 68, 59, 226, 136, 130, 80, 99, 121, 59, 208, 159, 80, 102, 114, 59, 240, 157, 148, 147, 80, 104, 105, 59, 206, 166, 80, 105, 59, 206, 160, 80, 108, 117, 115, 77, 105, 110, 117, 115, 59, 194, 177, 80, 111, 105, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 226, 132, 140, 80, 111, 112, 102, 59, 226, 132, 153, 80, 114, 59, 226, 170, 187, 80, 114, 101, 99, 101, 100, 101, 115, 59, 226, 137, 186, 80, 114, 101, 99, 101, 100, 101, 115, 69, 113, 117, 97, 108, 59, 226, 170, 175, 80, 114, 101, 99, 101, 100, 101, 115, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 137, 188, 80, 114, 101, 99, 101, 100, 101, 115, 84, 105, 108, 100, 101, 59, 226, 137, 190, 80, 114, 105, 109, 101, 59, 226, 128, 179, 80, 114, 111, 100, 117, 99, 116, 59, 226, 136, 143, 80, 114, 111, 112, 111, 114, 116, 105, 111, 110, 59, 226, 136, 183, 80, 114, 111, 112, 111, 114, 116, 105, 111, 110, 97, 108, 59, 226, 136, 157, 80, 115, 99, 114, 59, 240, 157, 146, 171, 80, 115, 105, 59, 206, 168, 81, 85, 79, 84, 34, 81, 85, 79, 84, 59, 34, 81, 102, 114, 59, 240, 157, 148, 148, 81, 111, 112, 102, 59, 226, 132, 154, 81, 115, 99, 114, 59, 240, 157, 146, 172, 82, 66, 97, 114, 114, 59, 226, 164, 144, 82, 69, 71, 194, 174, 82, 69, 71, 59, 194, 174, 82, 97, 99, 117, 116, 101, 59, 197, 148, 82, 97, 110, 103, 59, 226, 159, 171, 82, 97, 114, 114, 59, 226, 134, 160, 82, 97, 114, 114, 116, 108, 59, 226, 164, 150, 82, 99, 97, 114, 111, 110, 59, 197, 152, 82, 99, 101, 100, 105, 108, 59, 197, 150, 82, 99, 121, 59, 208, 160, 82, 101, 59, 226, 132, 156, 82, 101, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 226, 136, 139, 82, 101, 118, 101, 114, 115, 101, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 226, 135, 139, 82, 101, 118, 101, 114, 115, 101, 85, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 226, 165, 175, 82, 102, 114, 59, 226, 132, 156, 82, 104, 111, 59, 206, 161, 82, 105, 103, 104, 116, 65, 110, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 226, 159, 169, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 134, 146, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 66, 97, 114, 59, 226, 135, 165, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 135, 132, 82, 105, 103, 104, 116, 67, 101, 105, 108, 105, 110, 103, 59, 226, 140, 137, 82, 105, 103, 104, 116, 68, 111, 117, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 226, 159, 167, 82, 105, 103, 104, 116, 68, 111, 119, 110, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 157, 82, 105, 103, 104, 116, 68, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 226, 135, 130, 82, 105, 103, 104, 116, 68, 111, 119, 110, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 149, 82, 105, 103, 104, 116, 70, 108, 111, 111, 114, 59, 226, 140, 139, 82, 105, 103, 104, 116, 84, 101, 101, 59, 226, 138, 162, 82, 105, 103, 104, 116, 84, 101, 101, 65, 114, 114, 111, 119, 59, 226, 134, 166, 82, 105, 103, 104, 116, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 155, 82, 105, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 59, 226, 138, 179, 82, 105, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 66, 97, 114, 59, 226, 167, 144, 82, 105, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 69, 113, 117, 97, 108, 59, 226, 138, 181, 82, 105, 103, 104, 116, 85, 112, 68, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 226, 165, 143, 82, 105, 103, 104, 116, 85, 112, 84, 101, 101, 86, 101, 99, 116, 111, 114, 59, 226, 165, 156, 82, 105, 103, 104, 116, 85, 112, 86, 101, 99, 116, 111, 114, 59, 226, 134, 190, 82, 105, 103, 104, 116, 85, 112, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 148, 82, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 226, 135, 128, 82, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 66, 97, 114, 59, 226, 165, 147, 82, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 135, 146, 82, 111, 112, 102, 59, 226, 132, 157, 82, 111, 117, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 226, 165, 176, 82, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 135, 155, 82, 115, 99, 114, 59, 226, 132, 155, 82, 115, 104, 59, 226, 134, 177, 82, 117, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 226, 167, 180, 83, 72, 67, 72, 99, 121, 59, 208, 169, 83, 72, 99, 121, 59, 208, 168, 83, 79, 70, 84, 99, 121, 59, 208, 172, 83, 97, 99, 117, 116, 101, 59, 197, 154, 83, 99, 59, 226, 170, 188, 83, 99, 97, 114, 111, 110, 59, 197, 160, 83, 99, 101, 100, 105, 108, 59, 197, 158, 83, 99, 105, 114, 99, 59, 197, 156, 83, 99, 121, 59, 208, 161, 83, 102, 114, 59, 240, 157, 148, 150, 83, 104, 111, 114, 116, 68, 111, 119, 110, 65, 114, 114, 111, 119, 59, 226, 134, 147, 83, 104, 111, 114, 116, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 134, 144, 83, 104, 111, 114, 116, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 134, 146, 83, 104, 111, 114, 116, 85, 112, 65, 114, 114, 111, 119, 59, 226, 134, 145, 83, 105, 103, 109, 97, 59, 206, 163, 83, 109, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 226, 136, 152, 83, 111, 112, 102, 59, 240, 157, 149, 138, 83, 113, 114, 116, 59, 226, 136, 154, 83, 113, 117, 97, 114, 101, 59, 226, 150, 161, 83, 113, 117, 97, 114, 101, 73, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 226, 138, 147, 83, 113, 117, 97, 114, 101, 83, 117, 98, 115, 101, 116, 59, 226, 138, 143, 83, 113, 117, 97, 114, 101, 83, 117, 98, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 138, 145, 83, 113, 117, 97, 114, 101, 83, 117, 112, 101, 114, 115, 101, 116, 59, 226, 138, 144, 83, 113, 117, 97, 114, 101, 83, 117, 112, 101, 114, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 138, 146, 83, 113, 117, 97, 114, 101, 85, 110, 105, 111, 110, 59, 226, 138, 148, 83, 115, 99, 114, 59, 240, 157, 146, 174, 83, 116, 97, 114, 59, 226, 139, 134, 83, 117, 98, 59, 226, 139, 144, 83, 117, 98, 115, 101, 116, 59, 226, 139, 144, 83, 117, 98, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 138, 134, 83, 117, 99, 99, 101, 101, 100, 115, 59, 226, 137, 187, 83, 117, 99, 99, 101, 101, 100, 115, 69, 113, 117, 97, 108, 59, 226, 170, 176, 83, 117, 99, 99, 101, 101, 100, 115, 83, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 226, 137, 189, 83, 117, 99, 99, 101, 101, 100, 115, 84, 105, 108, 100, 101, 59, 226, 137, 191, 83, 117, 99, 104, 84, 104, 97, 116, 59, 226, 136, 139, 83, 117, 109, 59, 226, 136, 145, 83, 117, 112, 59, 226, 139, 145, 83, 117, 112, 101, 114, 115, 101, 116, 59, 226, 138, 131, 83, 117, 112, 101, 114, 115, 101, 116, 69, 113, 117, 97, 108, 59, 226, 138, 135, 83, 117, 112, 115, 101, 116, 59, 226, 139, 145, 84, 72, 79, 82, 78, 195, 158, 84, 72, 79, 82, 78, 59, 195, 158, 84, 82, 65, 68, 69, 59, 226, 132, 162, 84, 83, 72, 99, 121, 59, 208, 139, 84, 83, 99, 121, 59, 208, 166, 84, 97, 98, 59, 9, 84, 97, 117, 59, 206, 164, 84, 99, 97, 114, 111, 110, 59, 197, 164, 84, 99, 101, 100, 105, 108, 59, 197, 162, 84, 99, 121, 59, 208, 162, 84, 102, 114, 59, 240, 157, 148, 151, 84, 104, 101, 114, 101, 102, 111, 114, 101, 59, 226, 136, 180, 84, 104, 101, 116, 97, 59, 206, 152, 84, 104, 105, 99, 107, 83, 112, 97, 99, 101, 59, 226, 129, 159, 226, 128, 138, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 226, 128, 137, 84, 105, 108, 100, 101, 59, 226, 136, 188, 84, 105, 108, 100, 101, 69, 113, 117, 97, 108, 59, 226, 137, 131, 84, 105, 108, 100, 101, 70, 117, 108, 108, 69, 113, 117, 97, 108, 59, 226, 137, 133, 84, 105, 108, 100, 101, 84, 105, 108, 100, 101, 59, 226, 137, 136, 84, 111, 112, 102, 59, 240, 157, 149, 139, 84, 114, 105, 112, 108, 101, 68, 111, 116, 59, 226, 131, 155, 84, 115, 99, 114, 59, 240, 157, 146, 175, 84, 115, 116, 114, 111, 107, 59, 197, 166, 85, 97, 99, 117, 116, 101, 195, 154, 85, 97, 99, 117, 116, 101, 59, 195, 154, 85, 97, 114, 114, 59, 226, 134, 159, 85, 97, 114, 114, 111, 99, 105, 114, 59, 226, 165, 137, 85, 98, 114, 99, 121, 59, 208, 142, 85, 98, 114, 101, 118, 101, 59, 197, 172, 85, 99, 105, 114, 99, 195, 155, 85, 99, 105, 114, 99, 59, 195, 155, 85, 99, 121, 59, 208, 163, 85, 100, 98, 108, 97, 99, 59, 197, 176, 85, 102, 114, 59, 240, 157, 148, 152, 85, 103, 114, 97, 118, 101, 195, 153, 85, 103, 114, 97, 118, 101, 59, 195, 153, 85, 109, 97, 99, 114, 59, 197, 170, 85, 110, 100, 101, 114, 66, 97, 114, 59, 95, 85, 110, 100, 101, 114, 66, 114, 97, 99, 101, 59, 226, 143, 159, 85, 110, 100, 101, 114, 66, 114, 97, 99, 107, 101, 116, 59, 226, 142, 181, 85, 110, 100, 101, 114, 80, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 226, 143, 157, 85, 110, 105, 111, 110, 59, 226, 139, 131, 85, 110, 105, 111, 110, 80, 108, 117, 115, 59, 226, 138, 142, 85, 111, 103, 111, 110, 59, 197, 178, 85, 111, 112, 102, 59, 240, 157, 149, 140, 85, 112, 65, 114, 114, 111, 119, 59, 226, 134, 145, 85, 112, 65, 114, 114, 111, 119, 66, 97, 114, 59, 226, 164, 146, 85, 112, 65, 114, 114, 111, 119, 68, 111, 119, 110, 65, 114, 114, 111, 119, 59, 226, 135, 133, 85, 112, 68, 111, 119, 110, 65, 114, 114, 111, 119, 59, 226, 134, 149, 85, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 226, 165, 174, 85, 112, 84, 101, 101, 59, 226, 138, 165, 85, 112, 84, 101, 101, 65, 114, 114, 111, 119, 59, 226, 134, 165, 85, 112, 97, 114, 114, 111, 119, 59, 226, 135, 145, 85, 112, 100, 111, 119, 110, 97, 114, 114, 111, 119, 59, 226, 135, 149, 85, 112, 112, 101, 114, 76, 101, 102, 116, 65, 114, 114, 111, 119, 59, 226, 134, 150, 85, 112, 112, 101, 114, 82, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 226, 134, 151, 85, 112, 115, 105, 59, 207, 146, 85, 112, 115, 105, 108, 111, 110, 59, 206, 165, 85, 114, 105, 110, 103, 59, 197, 174, 85, 115, 99, 114, 59, 240, 157, 146, 176, 85, 116, 105, 108, 100, 101, 59, 197, 168, 85, 117, 109, 108, 195, 156, 85, 117, 109, 108, 59, 195, 156, 86, 68, 97, 115, 104, 59, 226, 138, 171, 86, 98, 97, 114, 59, 226, 171, 171, 86, 99, 121, 59, 208, 146, 86, 100, 97, 115, 104, 59, 226, 138, 169, 86, 100, 97, 115, 104, 108, 59, 226, 171, 166, 86, 101, 101, 59, 226, 139, 129, 86, 101, 114, 98, 97, 114, 59, 226, 128, 150, 86, 101, 114, 116, 59, 226, 128, 150, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 226, 136, 163, 86, 101, 114, 116, 105, 99, 97, 108, 76, 105, 110, 101, 59, 124, 86, 101, 114, 116, 105, 99, 97, 108, 83, 101, 112, 97, 114, 97, 116, 111, 114, 59, 226, 157, 152, 86, 101, 114, 116, 105, 99, 97, 108, 84, 105, 108, 100, 101, 59, 226, 137, 128, 86, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 226, 128, 138, 86, 102, 114, 59, 240, 157, 148, 153, 86, 111, 112, 102, 59, 240, 157, 149, 141, 86, 115, 99, 114, 59, 240, 157, 146, 177, 86, 118, 100, 97, 115, 104, 59, 226, 138, 170, 87, 99, 105, 114, 99, 59, 197, 180, 87, 101, 100, 103, 101, 59, 226, 139, 128, 87, 102, 114, 59, 240, 157, 148, 154, 87, 111, 112, 102, 59, 240, 157, 149, 142, 87, 115, 99, 114, 59, 240, 157, 146, 178, 88, 102, 114, 59, 240, 157, 148, 155, 88, 105, 59, 206, 158, 88, 111, 112, 102, 59, 240, 157, 149, 143, 88, 115, 99, 114, 59, 240, 157, 146, 179, 89, 65, 99, 121, 59, 208, 175, 89, 73, 99, 121, 59, 208, 135, 89, 85, 99, 121, 59, 208, 174, 89, 97, 99, 117, 116, 101, 195, 157, 89, 97, 99, 117, 116, 101, 59, 195, 157, 89, 99, 105, 114, 99, 59, 197, 182, 89, 99, 121, 59, 208, 171, 89, 102, 114, 59, 240, 157, 148, 156, 89, 111, 112, 102, 59, 240, 157, 149, 144, 89, 115, 99, 114, 59, 240, 157, 146, 180, 89, 117, 109, 108, 59, 197, 184, 90, 72, 99, 121, 59, 208, 150, 90, 97, 99, 117, 116, 101, 59, 197, 185, 90, 99, 97, 114, 111, 110, 59, 197, 189, 90, 99, 121, 59, 208, 151, 90, 100, 111, 116, 59, 197, 187, 90, 101, 114, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 226, 128, 139, 90, 101, 116, 97, 59, 206, 150, 90, 102, 114, 59, 226, 132, 168, 90, 111, 112, 102, 59, 226, 132, 164, 90, 115, 99, 114, 59, 240, 157, 146, 181, 97, 97, 99, 117, 116, 101, 195, 161, 97, 97, 99, 117, 116, 101, 59, 195, 161, 97, 98, 114, 101, 118, 101, 59, 196, 131, 97, 99, 59, 226, 136, 190, 97, 99, 69, 59, 226, 136, 190, 204, 179, 97, 99, 100, 59, 226, 136, 191, 97, 99, 105, 114, 99, 195, 162, 97, 99, 105, 114, 99, 59, 195, 162, 97, 99, 117, 116, 101, 194, 180, 97, 99, 117, 116, 101, 59, 194, 180, 97, 99, 121, 59, 208, 176, 97, 101, 108, 105, 103, 195, 166, 97, 101, 108, 105, 103, 59, 195, 166, 97, 102, 59, 226, 129, 161, 97, 102, 114, 59, 240, 157, 148, 158, 97, 103, 114, 97, 118, 101, 195, 160, 97, 103, 114, 97, 118, 101, 59, 195, 160, 97, 108, 101, 102, 115, 121, 109, 59, 226, 132, 181, 97, 108, 101, 112, 104, 59, 226, 132, 181, 97, 108, 112, 104, 97, 59, 206, 177, 97, 109, 97, 99, 114, 59, 196, 129, 97, 109, 97, 108, 103, 59, 226, 168, 191, 97, 109, 112, 38, 97, 109, 112, 59, 38, 97, 110, 100, 59, 226, 136, 167, 97, 110, 100, 97, 110, 100, 59, 226, 169, 149, 97, 110, 100, 100, 59, 226, 169, 156, 97, 110, 100, 115, 108, 111, 112, 101, 59, 226, 169, 152, 97, 110, 100, 118, 59, 226, 169, 154, 97, 110, 103, 59, 226, 136, 160, 97, 110, 103, 101, 59, 226, 166, 164, 97, 110, 103, 108, 101, 59, 226, 136, 160, 97, 110, 103, 109, 115, 100, 59, 226, 136, 161, 97, 110, 103, 109, 115, 100, 97, 97, 59, 226, 166, 168, 97, 110, 103, 109, 115, 100, 97, 98, 59, 226, 166, 169, 97, 110, 103, 109, 115, 100, 97, 99, 59, 226, 166, 170, 97, 110, 103, 109, 115, 100, 97, 100, 59, 226, 166, 171, 97, 110, 103, 109, 115, 100, 97, 101, 59, 226, 166, 172, 97, 110, 103, 109, 115, 100, 97, 102, 59, 226, 166, 173, 97, 110, 103, 109, 115, 100, 97, 103, 59, 226, 166, 174, 97, 110, 103, 109, 115, 100, 97, 104, 59, 226, 166, 175, 97, 110, 103, 114, 116, 59, 226, 136, 159, 97, 110, 103, 114, 116, 118, 98, 59, 226, 138, 190, 97, 110, 103, 114, 116, 118, 98, 100, 59, 226, 166, 157, 97, 110, 103, 115, 112, 104, 59, 226, 136, 162, 97, 110, 103, 115, 116, 59, 195, 133, 97, 110, 103, 122, 97, 114, 114, 59, 226, 141, 188, 97, 111, 103, 111, 110, 59, 196, 133, 97, 111, 112, 102, 59, 240, 157, 149, 146, 97, 112, 59, 226, 137, 136, 97, 112, 69, 59, 226, 169, 176, 97, 112, 97, 99, 105, 114, 59, 226, 169, 175, 97, 112, 101, 59, 226, 137, 138, 97, 112, 105, 100, 59, 226, 137, 139, 97, 112, 111, 115, 59, 39, 97, 112, 112, 114, 111, 120, 59, 226, 137, 136, 97, 112, 112, 114, 111, 120, 101, 113, 59, 226, 137, 138, 97, 114, 105, 110, 103, 195, 165, 97, 114, 105, 110, 103, 59, 195, 165, 97, 115, 99, 114, 59, 240, 157, 146, 182, 97, 115, 116, 59, 42, 97, 115, 121, 109, 112, 59, 226, 137, 136, 97, 115, 121, 109, 112, 101, 113, 59, 226, 137, 141, 97, 116, 105, 108, 100, 101, 195, 163, 97, 116, 105, 108, 100, 101, 59, 195, 163, 97, 117, 109, 108, 195, 164, 97, 117, 109, 108, 59, 195, 164, 97, 119, 99, 111, 110, 105, 110, 116, 59, 226, 136, 179, 97, 119, 105, 110, 116, 59, 226, 168, 145, 98, 78, 111, 116, 59, 226, 171, 173, 98, 97, 99, 107, 99, 111, 110, 103, 59, 226, 137, 140, 98, 97, 99, 107, 101, 112, 115, 105, 108, 111, 110, 59, 207, 182, 98, 97, 99, 107, 112, 114, 105, 109, 101, 59, 226, 128, 181, 98, 97, 99, 107, 115, 105, 109, 59, 226, 136, 189, 98, 97, 99, 107, 115, 105, 109, 101, 113, 59, 226, 139, 141, 98, 97, 114, 118, 101, 101, 59, 226, 138, 189, 98, 97, 114, 119, 101, 100, 59, 226, 140, 133, 98, 97, 114, 119, 101, 100, 103, 101, 59, 226, 140, 133, 98, 98, 114, 107, 59, 226, 142, 181, 98, 98, 114, 107, 116, 98, 114, 107, 59, 226, 142, 182, 98, 99, 111, 110, 103, 59, 226, 137, 140, 98, 99, 121, 59, 208, 177, 98, 100, 113, 117, 111, 59, 226, 128, 158, 98, 101, 99, 97, 117, 115, 59, 226, 136, 181, 98, 101, 99, 97, 117, 115, 101, 59, 226, 136, 181, 98, 101, 109, 112, 116, 121, 118, 59, 226, 166, 176, 98, 101, 112, 115, 105, 59, 207, 182, 98, 101, 114, 110, 111, 117, 59, 226, 132, 172, 98, 101, 116, 97, 59, 206, 178, 98, 101, 116, 104, 59, 226, 132, 182, 98, 101, 116, 119, 101, 101, 110, 59, 226, 137, 172, 98, 102, 114, 59, 240, 157, 148, 159, 98, 105, 103, 99, 97, 112, 59, 226, 139, 130, 98, 105, 103, 99, 105, 114, 99, 59, 226, 151, 175, 98, 105, 103, 99, 117, 112, 59, 226, 139, 131, 98, 105, 103, 111, 100, 111, 116, 59, 226, 168, 128, 98, 105, 103, 111, 112, 108, 117, 115, 59, 226, 168, 129, 98, 105, 103, 111, 116, 105, 109, 101, 115, 59, 226, 168, 130, 98, 105, 103, 115, 113, 99, 117, 112, 59, 226, 168, 134, 98, 105, 103, 115, 116, 97, 114, 59, 226, 152, 133, 98, 105, 103, 116, 114, 105, 97, 110, 103, 108, 101, 100, 111, 119, 110, 59, 226, 150, 189, 98, 105, 103, 116, 114, 105, 97, 110, 103, 108, 101, 117, 112, 59, 226, 150, 179, 98, 105, 103, 117, 112, 108, 117, 115, 59, 226, 168, 132, 98, 105, 103, 118, 101, 101, 59, 226, 139, 129, 98, 105, 103, 119, 101, 100, 103, 101, 59, 226, 139, 128, 98, 107, 97, 114, 111, 119, 59, 226, 164, 141, 98, 108, 97, 99, 107, 108, 111, 122, 101, 110, 103, 101, 59, 226, 167, 171, 98, 108, 97, 99, 107, 115, 113, 117, 97, 114, 101, 59, 226, 150, 170, 98, 108, 97, 99, 107, 116, 114, 105, 97, 110, 103, 108, 101, 59, 226, 150, 180, 98, 108, 97, 99, 107, 116, 114, 105, 97, 110, 103, 108, 101, 100, 111, 119, 110, 59, 226, 150, 190, 98, 108, 97, 99, 107, 116, 114, 105, 97, 110, 103, 108, 101, 108, 101, 102, 116, 59, 226, 151, 130, 98, 108, 97, 99, 107, 116, 114, 105, 97, 110, 103, 108, 101, 114, 105, 103, 104, 116, 59, 226, 150, 184, 98, 108, 97, 110, 107, 59, 226, 144, 163, 98, 108, 107, 49, 50, 59, 226, 150, 146, 98, 108, 107, 49, 52, 59, 226, 150, 145, 98, 108, 107, 51, 52, 59, 226, 150, 147, 98, 108, 111, 99, 107, 59, 226, 150, 136, 98, 110, 101, 59, 61, 226, 131, 165, 98, 110, 101, 113, 117, 105, 118, 59, 226, 137, 161, 226, 131, 165, 98, 110, 111, 116, 59, 226, 140, 144, 98, 111, 112, 102, 59, 240, 157, 149, 147, 98, 111, 116, 59, 226, 138, 165, 98, 111, 116, 116, 111, 109, 59, 226, 138, 165, 98, 111, 119, 116, 105, 101, 59, 226, 139, 136, 98, 111, 120, 68, 76, 59, 226, 149, 151, 98, 111, 120, 68, 82, 59, 226, 149, 148, 98, 111, 120, 68, 108, 59, 226, 149, 150, 98, 111, 120, 68, 114, 59, 226, 149, 147, 98, 111, 120, 72, 59, 226, 149, 144, 98, 111, 120, 72, 68, 59, 226, 149, 166, 98, 111, 120, 72, 85, 59, 226, 149, 169, 98, 111, 120, 72, 100, 59, 226, 149, 164, 98, 111, 120, 72, 117, 59, 226, 149, 167, 98, 111, 120, 85, 76, 59, 226, 149, 157, 98, 111, 120, 85, 82, 59, 226, 149, 154, 98, 111, 120, 85, 108, 59, 226, 149, 156, 98, 111, 120, 85, 114, 59, 226, 149, 153, 98, 111, 120, 86, 59, 226, 149, 145, 98, 111, 120, 86, 72, 59, 226, 149, 172, 98, 111, 120, 86, 76, 59, 226, 149, 163, 98, 111, 120, 86, 82, 59, 226, 149, 160, 98, 111, 120, 86, 104, 59, 226, 149, 171, 98, 111, 120, 86, 108, 59, 226, 149, 162, 98, 111, 120, 86, 114, 59, 226, 149, 159, 98, 111, 120, 98, 111, 120, 59, 226, 167, 137, 98, 111, 120, 100, 76, 59, 226, 149, 149, 98, 111, 120, 100, 82, 59, 226, 149, 146, 98, 111, 120, 100, 108, 59, 226, 148, 144, 98, 111, 120, 100, 114, 59, 226, 148, 140, 98, 111, 120, 104, 59, 226, 148, 128, 98, 111, 120, 104, 68, 59, 226, 149, 165, 98, 111, 120, 104, 85, 59, 226, 149, 168, 98, 111, 120, 104, 100, 59, 226, 148, 172, 98, 111, 120, 104, 117, 59, 226, 148, 180, 98, 111, 120, 109, 105, 110, 117, 115, 59, 226, 138, 159, 98, 111, 120, 112, 108, 117, 115, 59, 226, 138, 158, 98, 111, 120, 116, 105, 109, 101, 115, 59, 226, 138, 160, 98, 111, 120, 117, 76, 59, 226, 149, 155, 98, 111, 120, 117, 82, 59, 226, 149, 152, 98, 111, 120, 117, 108, 59, 226, 148, 152, 98, 111, 120, 117, 114, 59, 226, 148, 148, 98, 111, 120, 118, 59, 226, 148, 130, 98, 111, 120, 118, 72, 59, 226, 149, 170, 98, 111, 120, 118, 76, 59, 226, 149, 161, 98, 111, 120, 118, 82, 59, 226, 149, 158, 98, 111, 120, 118, 104, 59, 226, 148, 188, 98, 111, 120, 118, 108, 59, 226, 148, 164, 98, 111, 120, 118, 114, 59, 226, 148, 156, 98, 112, 114, 105, 109, 101, 59, 226, 128, 181, 98, 114, 101, 118, 101, 59, 203, 152, 98, 114, 118, 98, 97, 114, 194, 166, 98, 114, 118, 98, 97, 114, 59, 194, 166, 98, 115, 99, 114, 59, 240, 157, 146, 183, 98, 115, 101, 109, 105, 59, 226, 129, 143, 98, 115, 105, 109, 59, 226, 136, 189, 98, 115, 105, 109, 101, 59, 226, 139, 141, 98, 115, 111, 108, 59, 92, 98, 115, 111, 108, 98, 59, 226, 167, 133, 98, 115, 111, 108, 104, 115, 117, 98, 59, 226, 159, 136, 98, 117, 108, 108, 59, 226, 128, 162, 98, 117, 108, 108, 101, 116, 59, 226, 128, 162, 98, 117, 109, 112, 59, 226, 137, 142, 98, 117, 109, 112, 69, 59, 226, 170, 174, 98, 117, 109, 112, 101, 59, 226, 137, 143, 98, 117, 109, 112, 101, 113, 59, 226, 137, 143, 99, 97, 99, 117, 116, 101, 59, 196, 135, 99, 97, 112, 59, 226, 136, 169, 99, 97, 112, 97, 110, 100, 59, 226, 169, 132, 99, 97, 112, 98, 114, 99, 117, 112, 59, 226, 169, 137, 99, 97, 112, 99, 97, 112, 59, 226, 169, 139, 99, 97, 112, 99, 117, 112, 59, 226, 169, 135, 99, 97, 112, 100, 111, 116, 59, 226, 169, 128, 99, 97, 112, 115, 59, 226, 136, 169, 239, 184, 128, 99, 97, 114, 101, 116, 59, 226, 129, 129, 99, 97, 114, 111, 110, 59, 203, 135, 99, 99, 97, 112, 115, 59, 226, 169, 141, 99, 99, 97, 114, 111, 110, 59, 196, 141, 99, 99, 101, 100, 105, 108, 195, 167, 99, 99, 101, 100, 105, 108, 59, 195, 167, 99, 99, 105, 114, 99, 59, 196, 137, 99, 99, 117, 112, 115, 59, 226, 169, 140, 99, 99, 117, 112, 115, 115, 109, 59, 226, 169, 144, 99, 100, 111, 116, 59, 196, 139, 99, 101, 100, 105, 108, 194, 184, 99, 101, 100, 105, 108, 59, 194, 184, 99, 101, 109, 112, 116, 121, 118, 59, 226, 166, 178, 99, 101, 110, 116, 194, 162, 99, 101, 110, 116, 59, 194, 162, 99, 101, 110, 116, 101, 114, 100, 111, 116, 59, 194, 183, 99, 102, 114, 59, 240, 157, 148, 160, 99, 104, 99, 121, 59, 209, 135, 99, 104, 101, 99, 107, 59, 226, 156, 147, 99, 104, 101, 99, 107, 109, 97, 114, 107, 59, 226, 156, 147, 99, 104, 105, 59, 207, 135, 99, 105, 114, 59, 226, 151, 139, 99, 105, 114, 69, 59, 226, 167, 131, 99, 105, 114, 99, 59, 203, 134, 99, 105, 114, 99, 101, 113, 59, 226, 137, 151, 99, 105, 114, 99, 108, 101, 97, 114, 114, 111, 119, 108, 101, 102, 116, 59, 226, 134, 186, 99, 105, 114, 99, 108, 101, 97, 114, 114, 111, 119, 114, 105, 103, 104, 116, 59, 226, 134, 187, 99, 105, 114, 99, 108, 101, 100, 82, 59, 194, 174, 99, 105, 114, 99, 108, 101, 100, 83, 59, 226, 147, 136, 99, 105, 114, 99, 108, 101, 100, 97, 115, 116, 59, 226, 138, 155, 99, 105, 114, 99, 108, 101, 100, 99, 105, 114, 99, 59, 226, 138, 154, 99, 105, 114, 99, 108, 101, 100, 100, 97, 115, 104, 59, 226, 138, 157, 99, 105, 114, 101, 59, 226, 137, 151, 99, 105, 114, 102, 110, 105, 110, 116, 59, 226, 168, 144, 99, 105, 114, 109, 105, 100, 59, 226, 171, 175, 99, 105, 114, 115, 99, 105, 114, 59, 226, 167, 130, 99, 108, 117, 98, 115, 59, 226, 153, 163, 99, 108, 117, 98, 115, 117, 105, 116, 59, 226, 153, 163, 99, 111, 108, 111, 110, 59, 58, 99, 111, 108, 111, 110, 101, 59, 226, 137, 148, 99, 111, 108, 111, 110, 101, 113, 59, 226, 137, 148, 99, 111, 109, 109, 97, 59, 44, 99, 111, 109, 109, 97, 116, 59, 64, 99, 111, 109, 112, 59, 226, 136, 129, 99, 111, 109, 112, 102, 110, 59, 226, 136, 152, 99, 111, 109, 112, 108, 101, 109, 101, 110, 116, 59, 226, 136, 129, 99, 111, 109, 112, 108, 101, 120, 101, 115, 59, 226, 132, 130, 99, 111, 110, 103, 59, 226, 137, 133, 99, 111, 110, 103, 100, 111, 116, 59, 226, 169, 173, 99, 111, 110, 105, 110, 116, 59, 226, 136, 174, 99, 111, 112, 102, 59, 240, 157, 149, 148, 99, 111, 112, 114, 111, 100, 59, 226, 136, 144, 99, 111, 112, 121, 194, 169, 99, 111, 112, 121, 59, 194, 169, 99, 111, 112, 121, 115, 114, 59, 226, 132, 151, 99, 114, 97, 114, 114, 59, 226, 134, 181, 99, 114, 111, 115, 115, 59, 226, 156, 151, 99, 115, 99, 114, 59, 240, 157, 146, 184, 99, 115, 117, 98, 59, 226, 171, 143, 99, 115, 117, 98, 101, 59, 226, 171, 145, 99, 115, 117, 112, 59, 226, 171, 144, 99, 115, 117, 112, 101, 59, 226, 171, 146, 99, 116, 100, 111, 116, 59, 226, 139, 175, 99, 117, 100, 97, 114, 114, 108, 59, 226, 164, 184, 99, 117, 100, 97, 114, 114, 114, 59, 226, 164, 181, 99, 117, 101, 112, 114, 59, 226, 139, 158, 99, 117, 101, 115, 99, 59, 226, 139, 159, 99, 117, 108, 97, 114, 114, 59, 226, 134, 182, 99, 117, 108, 97, 114, 114, 112, 59, 226, 164, 189, 99, 117, 112, 59, 226, 136, 170, 99, 117, 112, 98, 114, 99, 97, 112, 59, 226, 169, 136, 99, 117, 112, 99, 97, 112, 59, 226, 169, 134, 99, 117, 112, 99, 117, 112, 59, 226, 169, 138, 99, 117, 112, 100, 111, 116, 59, 226, 138, 141, 99, 117, 112, 111, 114, 59, 226, 169, 133, 99, 117, 112, 115, 59, 226, 136, 170, 239, 184, 128, 99, 117, 114, 97, 114, 114, 59, 226, 134, 183, 99, 117, 114, 97, 114, 114, 109, 59, 226, 164, 188, 99, 117, 114, 108, 121, 101, 113, 112, 114, 101, 99, 59, 226, 139, 158, 99, 117, 114, 108, 121, 101, 113, 115, 117, 99, 99, 59, 226, 139, 159, 99, 117, 114, 108, 121, 118, 101, 101, 59, 226, 139, 142, 99, 117, 114, 108, 121, 119, 101, 100, 103, 101, 59, 226, 139, 143, 99, 117, 114, 114, 101, 110, 194, 164, 99, 117, 114, 114, 101, 110, 59, 194, 164, 99, 117, 114, 118, 101, 97, 114, 114, 111, 119, 108, 101, 102, 116, 59, 226, 134, 182, 99, 117, 114, 118, 101, 97, 114, 114, 111, 119, 114, 105, 103, 104, 116, 59, 226, 134, 183, 99, 117, 118, 101, 101, 59, 226, 139, 142, 99, 117, 119, 101, 100, 59, 226, 139, 143, 99, 119, 99, 111, 110, 105, 110, 116, 59, 226, 136, 178, 99, 119, 105, 110, 116, 59, 226, 136, 177, 99, 121, 108, 99, 116, 121, 59, 226, 140, 173, 100, 65, 114, 114, 59, 226, 135, 147, 100, 72, 97, 114, 59, 226, 165, 165, 100, 97, 103, 103, 101, 114, 59, 226, 128, 160, 100, 97, 108, 101, 116, 104, 59, 226, 132, 184, 100, 97, 114, 114, 59, 226, 134, 147, 100, 97, 115, 104, 59, 226, 128, 144, 100, 97, 115, 104, 118, 59, 226, 138, 163, 100, 98, 107, 97, 114, 111, 119, 59, 226, 164, 143, 100, 98, 108, 97, 99, 59, 203, 157, 100, 99, 97, 114, 111, 110, 59, 196, 143, 100, 99, 121, 59, 208, 180, 100, 100, 59, 226, 133, 134, 100, 100, 97, 103, 103, 101, 114, 59, 226, 128, 161, 100, 100, 97, 114, 114, 59, 226, 135, 138, 100, 100, 111, 116, 115, 101, 113, 59, 226, 169, 183, 100, 101, 103, 194, 176, 100, 101, 103, 59, 194, 176, 100, 101, 108, 116, 97, 59, 206, 180, 100, 101, 109, 112, 116, 121, 118, 59, 226, 166, 177, 100, 102, 105, 115, 104, 116, 59, 226, 165, 191, 100, 102, 114, 59, 240, 157, 148, 161, 100, 104, 97, 114, 108, 59, 226, 135, 131, 100, 104, 97, 114, 114, 59, 226, 135, 130, 100, 105, 97, 109, 59, 226, 139, 132, 100, 105, 97, 109, 111, 110, 100, 59, 226, 139, 132, 100, 105, 97, 109, 111, 110, 100, 115, 117, 105, 116, 59, 226, 153, 166, 100, 105, 97, 109, 115, 59, 226, 153, 166, 100, 105, 101, 59, 194, 168, 100, 105, 103, 97, 109, 109, 97, 59, 207, 157, 100, 105, 115, 105, 110, 59, 226, 139, 178, 100, 105, 118, 59, 195, 183, 100, 105, 118, 105, 100, 101, 195, 183, 100, 105, 118, 105, 100, 101, 59, 195, 183, 100, 105, 118, 105, 100, 101, 111, 110, 116, 105, 109, 101, 115, 59, 226, 139, 135, 100, 105, 118, 111, 110, 120, 59, 226, 139, 135, 100, 106, 99, 121, 59, 209, 146, 100, 108, 99, 111, 114, 110, 59, 226, 140, 158, 100, 108, 99, 114, 111, 112, 59, 226, 140, 141, 100, 111, 108, 108, 97, 114, 59, 36, 100, 111, 112, 102, 59, 240, 157, 149, 149, 100, 111, 116, 59, 203, 153, 100, 111, 116, 101, 113, 59, 226, 137, 144, 100, 111, 116, 101, 113, 100, 111, 116, 59, 226, 137, 145, 100, 111, 116, 109, 105, 110, 117, 115, 59, 226, 136, 184, 100, 111, 116, 112, 108, 117, 115, 59, 226, 136, 148, 100, 111, 116, 115, 113, 117, 97, 114, 101, 59, 226, 138, 161, 100, 111, 117, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 226, 140, 134, 100, 111, 119, 110, 97, 114, 114, 111, 119, 59, 226, 134, 147, 100, 111, 119, 110, 100, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 226, 135, 138, 100, 111, 119, 110, 104, 97, 114, 112, 111, 111, 110, 108, 101, 102, 116, 59, 226, 135, 131, 100, 111, 119, 110, 104, 97, 114, 112, 111, 111, 110, 114, 105, 103, 104, 116, 59, 226, 135, 130, 100, 114, 98, 107, 97, 114, 111, 119, 59, 226, 164, 144, 100, 114, 99, 111, 114, 110, 59, 226, 140, 159, 100, 114, 99, 114, 111, 112, 59, 226, 140, 140, 100, 115, 99, 114, 59, 240, 157, 146, 185, 100, 115, 99, 121, 59, 209, 149, 100, 115, 111, 108, 59, 226, 167, 182, 100, 115, 116, 114, 111, 107, 59, 196, 145, 100, 116, 100, 111, 116, 59, 226, 139, 177, 100, 116, 114, 105, 59, 226, 150, 191, 100, 116, 114, 105, 102, 59, 226, 150, 190, 100, 117, 97, 114, 114, 59, 226, 135, 181, 100, 117, 104, 97, 114, 59, 226, 165, 175, 100, 119, 97, 110, 103, 108, 101, 59, 226, 166, 166, 100, 122, 99, 121, 59, 209, 159, 100, 122, 105, 103, 114, 97, 114, 114, 59, 226, 159, 191, 101, 68, 68, 111, 116, 59, 226, 169, 183, 101, 68, 111, 116, 59, 226, 137, 145, 101, 97, 99, 117, 116, 101, 195, 169, 101, 97, 99, 117, 116, 101, 59, 195, 169, 101, 97, 115, 116, 101, 114, 59, 226, 169, 174, 101, 99, 97, 114, 111, 110, 59, 196, 155, 101, 99, 105, 114, 59, 226, 137, 150, 101, 99, 105, 114, 99, 195, 170, 101, 99, 105, 114, 99, 59, 195, 170, 101, 99, 111, 108, 111, 110, 59, 226, 137, 149, 101, 99, 121, 59, 209, 141, 101, 100, 111, 116, 59, 196, 151, 101, 101, 59, 226, 133, 135, 101, 102, 68, 111, 116, 59, 226, 137, 146, 101, 102, 114, 59, 240, 157, 148, 162, 101, 103, 59, 226, 170, 154, 101, 103, 114, 97, 118, 101, 195, 168, 101, 103, 114, 97, 118, 101, 59, 195, 168, 101, 103, 115, 59, 226, 170, 150, 101, 103, 115, 100, 111, 116, 59, 226, 170, 152, 101, 108, 59, 226, 170, 153, 101, 108, 105, 110, 116, 101, 114, 115, 59, 226, 143, 167, 101, 108, 108, 59, 226, 132, 147, 101, 108, 115, 59, 226, 170, 149, 101, 108, 115, 100, 111, 116, 59, 226, 170, 151, 101, 109, 97, 99, 114, 59, 196, 147, 101, 109, 112, 116, 121, 59, 226, 136, 133, 101, 109, 112, 116, 121, 115, 101, 116, 59, 226, 136, 133, 101, 109, 112, 116, 121, 118, 59, 226, 136, 133, 101, 109, 115, 112, 49, 51, 59, 226, 128, 132, 101, 109, 115, 112, 49, 52, 59, 226, 128, 133, 101, 109, 115, 112, 59, 226, 128, 131, 101, 110, 103, 59, 197, 139, 101, 110, 115, 112, 59, 226, 128, 130, 101, 111, 103, 111, 110, 59, 196, 153, 101, 111, 112, 102, 59, 240, 157, 149, 150, 101, 112, 97, 114, 59, 226, 139, 149, 101, 112, 97, 114, 115, 108, 59, 226, 167, 163, 101, 112, 108, 117, 115, 59, 226, 169, 177, 101, 112, 115, 105, 59, 206, 181, 101, 112, 115, 105, 108, 111, 110, 59, 206, 181, 101, 112, 115, 105, 118, 59, 207, 181, 101, 113, 99, 105, 114, 99, 59, 226, 137, 150, 101, 113, 99, 111, 108, 111, 110, 59, 226, 137, 149, 101, 113, 115, 105, 109, 59, 226, 137, 130, 101, 113, 115, 108, 97, 110, 116, 103, 116, 114, 59, 226, 170, 150, 101, 113, 115, 108, 97, 110, 116, 108, 101, 115, 115, 59, 226, 170, 149, 101, 113, 117, 97, 108, 115, 59, 61, 101, 113, 117, 101, 115, 116, 59, 226, 137, 159, 101, 113, 117, 105, 118, 59, 226, 137, 161, 101, 113, 117, 105, 118, 68, 68, 59, 226, 169, 184, 101, 113, 118, 112, 97, 114, 115, 108, 59, 226, 167, 165, 101, 114, 68, 111, 116, 59, 226, 137, 147, 101, 114, 97, 114, 114, 59, 226, 165, 177, 101, 115, 99, 114, 59, 226, 132, 175, 101, 115, 100, 111, 116, 59, 226, 137, 144, 101, 115, 105, 109, 59, 226, 137, 130, 101, 116, 97, 59, 206, 183, 101, 116, 104, 195, 176, 101, 116, 104, 59, 195, 176, 101, 117, 109, 108, 195, 171, 101, 117, 109, 108, 59, 195, 171, 101, 117, 114, 111, 59, 226, 130, 172, 101, 120, 99, 108, 59, 33, 101, 120, 105, 115, 116, 59, 226, 136, 131, 101, 120, 112, 101, 99, 116, 97, 116, 105, 111, 110, 59, 226, 132, 176, 101, 120, 112, 111, 110, 101, 110, 116, 105, 97, 108, 101, 59, 226, 133, 135, 102, 97, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 226, 137, 146, 102, 99, 121, 59, 209, 132, 102, 101, 109, 97, 108, 101, 59, 226, 153, 128, 102, 102, 105, 108, 105, 103, 59, 239, 172, 131, 102, 102, 108, 105, 103, 59, 239, 172, 128, 102, 102, 108, 108, 105, 103, 59, 239, 172, 132, 102, 102, 114, 59, 240, 157, 148, 163, 102, 105, 108, 105, 103, 59, 239, 172, 129, 102, 106, 108, 105, 103, 59, 102, 106, 102, 108, 97, 116, 59, 226, 153, 173, 102, 108, 108, 105, 103, 59, 239, 172, 130, 102, 108, 116, 110, 115, 59, 226, 150, 177, 102, 110, 111, 102, 59, 198, 146, 102, 111, 112, 102, 59, 240, 157, 149, 151, 102, 111, 114, 97, 108, 108, 59, 226, 136, 128, 102, 111, 114, 107, 59, 226, 139, 148, 102, 111, 114, 107, 118, 59, 226, 171, 153, 102, 112, 97, 114, 116, 105, 110, 116, 59, 226, 168, 141, 102, 114, 97, 99, 49, 50, 194, 189, 102, 114, 97, 99, 49, 50, 59, 194, 189, 102, 114, 97, 99, 49, 51, 59, 226, 133, 147, 102, 114, 97, 99, 49, 52, 194, 188, 102, 114, 97, 99, 49, 52, 59, 194, 188, 102, 114, 97, 99, 49, 53, 59, 226, 133, 149, 102, 114, 97, 99, 49, 54, 59, 226, 133, 153, 102, 114, 97, 99, 49, 56, 59, 226, 133, 155, 102, 114, 97, 99, 50, 51, 59, 226, 133, 148, 102, 114, 97, 99, 50, 53, 59, 226, 133, 150, 102, 114, 97, 99, 51, 52, 194, 190, 102, 114, 97, 99, 51, 52, 59, 194, 190, 102, 114, 97, 99, 51, 53, 59, 226, 133, 151, 102, 114, 97, 99, 51, 56, 59, 226, 133, 156, 102, 114, 97, 99, 52, 53, 59, 226, 133, 152, 102, 114, 97, 99, 53, 54, 59, 226, 133, 154, 102, 114, 97, 99, 53, 56, 59, 226, 133, 157, 102, 114, 97, 99, 55, 56, 59, 226, 133, 158, 102, 114, 97, 115, 108, 59, 226, 129, 132, 102, 114, 111, 119, 110, 59, 226, 140, 162, 102, 115, 99, 114, 59, 240, 157, 146, 187, 103, 69, 59, 226, 137, 167, 103, 69, 108, 59, 226, 170, 140, 103, 97, 99, 117, 116, 101, 59, 199, 181, 103, 97, 109, 109, 97, 59, 206, 179, 103, 97, 109, 109, 97, 100, 59, 207, 157, 103, 97, 112, 59, 226, 170, 134, 103, 98, 114, 101, 118, 101, 59, 196, 159, 103, 99, 105, 114, 99, 59, 196, 157, 103, 99, 121, 59, 208, 179, 103, 100, 111, 116, 59, 196, 161, 103, 101, 59, 226, 137, 165, 103, 101, 108, 59, 226, 139, 155, 103, 101, 113, 59, 226, 137, 165, 103, 101, 113, 113, 59, 226, 137, 167, 103, 101, 113, 115, 108, 97, 110, 116, 59, 226, 169, 190, 103, 101, 115, 59, 226, 169, 190, 103, 101, 115, 99, 99, 59, 226, 170, 169, 103, 101, 115, 100, 111, 116, 59, 226, 170, 128, 103, 101, 115, 100, 111, 116, 111, 59, 226, 170, 130, 103, 101, 115, 100, 111, 116, 111, 108, 59, 226, 170, 132, 103, 101, 115, 108, 59, 226, 139, 155, 239, 184, 128, 103, 101, 115, 108, 101, 115, 59, 226, 170, 148, 103, 102, 114, 59, 240, 157, 148, 164, 103, 103, 59, 226, 137, 171, 103, 103, 103, 59, 226, 139, 153, 103, 105, 109, 101, 108, 59, 226, 132, 183, 103, 106, 99, 121, 59, 209, 147, 103, 108, 59, 226, 137, 183, 103, 108, 69, 59, 226, 170, 146, 103, 108, 97, 59, 226, 170, 165, 103, 108, 106, 59, 226, 170, 164, 103, 110, 69, 59, 226, 137, 169, 103, 110, 97, 112, 59, 226, 170, 138, 103, 110, 97, 112, 112, 114, 111, 120, 59, 226, 170, 138, 103, 110, 101, 59, 226, 170, 136, 103, 110, 101, 113, 59, 226, 170, 136, 103, 110, 101, 113, 113, 59, 226, 137, 169, 103, 110, 115, 105, 109, 59, 226, 139, 167, 103, 111, 112, 102, 59, 240, 157, 149, 152, 103, 114, 97, 118, 101, 59, 96, 103, 115, 99, 114, 59, 226, 132, 138, 103, 115, 105, 109, 59, 226, 137, 179, 103, 115, 105, 109, 101, 59, 226, 170, 142, 103, 115, 105, 109, 108, 59, 226, 170, 144, 103, 116, 62, 103, 116, 59, 62, 103, 116, 99, 99, 59, 226, 170, 167, 103, 116, 99, 105, 114, 59, 226, 169, 186, 103, 116, 100, 111, 116, 59, 226, 139, 151, 103, 116, 108, 80, 97, 114, 59, 226, 166, 149, 103, 116, 113, 117, 101, 115, 116, 59, 226, 169, 188, 103, 116, 114, 97, 112, 112, 114, 111, 120, 59, 226, 170, 134, 103, 116, 114, 97, 114, 114, 59, 226, 165, 184, 103, 116, 114, 100, 111, 116, 59, 226, 139, 151, 103, 116, 114, 101, 113, 108, 101, 115, 115, 59, 226, 139, 155, 103, 116, 114, 101, 113, 113, 108, 101, 115, 115, 59, 226, 170, 140, 103, 116, 114, 108, 101, 115, 115, 59, 226, 137, 183, 103, 116, 114, 115, 105, 109, 59, 226, 137, 179, 103, 118, 101, 114, 116, 110, 101, 113, 113, 59, 226, 137, 169, 239, 184, 128, 103, 118, 110, 69, 59, 226, 137, 169, 239, 184, 128, 104, 65, 114, 114, 59, 226, 135, 148, 104, 97, 105, 114, 115, 112, 59, 226, 128, 138, 104, 97, 108, 102, 59, 194, 189, 104, 97, 109, 105, 108, 116, 59, 226, 132, 139, 104, 97, 114, 100, 99, 121, 59, 209, 138, 104, 97, 114, 114, 59, 226, 134, 148, 104, 97, 114, 114, 99, 105, 114, 59, 226, 165, 136, 104, 97, 114, 114, 119, 59, 226, 134, 173, 104, 98, 97, 114, 59, 226, 132, 143, 104, 99, 105, 114, 99, 59, 196, 165, 104, 101, 97, 114, 116, 115, 59, 226, 153, 165, 104, 101, 97, 114, 116, 115, 117, 105, 116, 59, 226, 153, 165, 104, 101, 108, 108, 105, 112, 59, 226, 128, 166, 104, 101, 114, 99, 111, 110, 59, 226, 138, 185, 104, 102, 114, 59, 240, 157, 148, 165, 104, 107, 115, 101, 97, 114, 111, 119, 59, 226, 164, 165, 104, 107, 115, 119, 97, 114, 111, 119, 59, 226, 164, 166, 104, 111, 97, 114, 114, 59, 226, 135, 191, 104, 111, 109, 116, 104, 116, 59, 226, 136, 187, 104, 111, 111, 107, 108, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 134, 169, 104, 111, 111, 107, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 134, 170, 104, 111, 112, 102, 59, 240, 157, 149, 153, 104, 111, 114, 98, 97, 114, 59, 226, 128, 149, 104, 115, 99, 114, 59, 240, 157, 146, 189, 104, 115, 108, 97, 115, 104, 59, 226, 132, 143, 104, 115, 116, 114, 111, 107, 59, 196, 167, 104, 121, 98, 117, 108, 108, 59, 226, 129, 131, 104, 121, 112, 104, 101, 110, 59, 226, 128, 144, 105, 97, 99, 117, 116, 101, 195, 173, 105, 97, 99, 117, 116, 101, 59, 195, 173, 105, 99, 59, 226, 129, 163, 105, 99, 105, 114, 99, 195, 174, 105, 99, 105, 114, 99, 59, 195, 174, 105, 99, 121, 59, 208, 184, 105, 101, 99, 121, 59, 208, 181, 105, 101, 120, 99, 108, 194, 161, 105, 101, 120, 99, 108, 59, 194, 161, 105, 102, 102, 59, 226, 135, 148, 105, 102, 114, 59, 240, 157, 148, 166, 105, 103, 114, 97, 118, 101, 195, 172, 105, 103, 114, 97, 118, 101, 59, 195, 172, 105, 105, 59, 226, 133, 136, 105, 105, 105, 105, 110, 116, 59, 226, 168, 140, 105, 105, 105, 110, 116, 59, 226, 136, 173, 105, 105, 110, 102, 105, 110, 59, 226, 167, 156, 105, 105, 111, 116, 97, 59, 226, 132, 169, 105, 106, 108, 105, 103, 59, 196, 179, 105, 109, 97, 99, 114, 59, 196, 171, 105, 109, 97, 103, 101, 59, 226, 132, 145, 105, 109, 97, 103, 108, 105, 110, 101, 59, 226, 132, 144, 105, 109, 97, 103, 112, 97, 114, 116, 59, 226, 132, 145, 105, 109, 97, 116, 104, 59, 196, 177, 105, 109, 111, 102, 59, 226, 138, 183, 105, 109, 112, 101, 100, 59, 198, 181, 105, 110, 59, 226, 136, 136, 105, 110, 99, 97, 114, 101, 59, 226, 132, 133, 105, 110, 102, 105, 110, 59, 226, 136, 158, 105, 110, 102, 105, 110, 116, 105, 101, 59, 226, 167, 157, 105, 110, 111, 100, 111, 116, 59, 196, 177, 105, 110, 116, 59, 226, 136, 171, 105, 110, 116, 99, 97, 108, 59, 226, 138, 186, 105, 110, 116, 101, 103, 101, 114, 115, 59, 226, 132, 164, 105, 110, 116, 101, 114, 99, 97, 108, 59, 226, 138, 186, 105, 110, 116, 108, 97, 114, 104, 107, 59, 226, 168, 151, 105, 110, 116, 112, 114, 111, 100, 59, 226, 168, 188, 105, 111, 99, 121, 59, 209, 145, 105, 111, 103, 111, 110, 59, 196, 175, 105, 111, 112, 102, 59, 240, 157, 149, 154, 105, 111, 116, 97, 59, 206, 185, 105, 112, 114, 111, 100, 59, 226, 168, 188, 105, 113, 117, 101, 115, 116, 194, 191, 105, 113, 117, 101, 115, 116, 59, 194, 191, 105, 115, 99, 114, 59, 240, 157, 146, 190, 105, 115, 105, 110, 59, 226, 136, 136, 105, 115, 105, 110, 69, 59, 226, 139, 185, 105, 115, 105, 110, 100, 111, 116, 59, 226, 139, 181, 105, 115, 105, 110, 115, 59, 226, 139, 180, 105, 115, 105, 110, 115, 118, 59, 226, 139, 179, 105, 115, 105, 110, 118, 59, 226, 136, 136, 105, 116, 59, 226, 129, 162, 105, 116, 105, 108, 100, 101, 59, 196, 169, 105, 117, 107, 99, 121, 59, 209, 150, 105, 117, 109, 108, 195, 175, 105, 117, 109, 108, 59, 195, 175, 106, 99, 105, 114, 99, 59, 196, 181, 106, 99, 121, 59, 208, 185, 106, 102, 114, 59, 240, 157, 148, 167, 106, 109, 97, 116, 104, 59, 200, 183, 106, 111, 112, 102, 59, 240, 157, 149, 155, 106, 115, 99, 114, 59, 240, 157, 146, 191, 106, 115, 101, 114, 99, 121, 59, 209, 152, 106, 117, 107, 99, 121, 59, 209, 148, 107, 97, 112, 112, 97, 59, 206, 186, 107, 97, 112, 112, 97, 118, 59, 207, 176, 107, 99, 101, 100, 105, 108, 59, 196, 183, 107, 99, 121, 59, 208, 186, 107, 102, 114, 59, 240, 157, 148, 168, 107, 103, 114, 101, 101, 110, 59, 196, 184, 107, 104, 99, 121, 59, 209, 133, 107, 106, 99, 121, 59, 209, 156, 107, 111, 112, 102, 59, 240, 157, 149, 156, 107, 115, 99, 114, 59, 240, 157, 147, 128, 108, 65, 97, 114, 114, 59, 226, 135, 154, 108, 65, 114, 114, 59, 226, 135, 144, 108, 65, 116, 97, 105, 108, 59, 226, 164, 155, 108, 66, 97, 114, 114, 59, 226, 164, 142, 108, 69, 59, 226, 137, 166, 108, 69, 103, 59, 226, 170, 139, 108, 72, 97, 114, 59, 226, 165, 162, 108, 97, 99, 117, 116, 101, 59, 196, 186, 108, 97, 101, 109, 112, 116, 121, 118, 59, 226, 166, 180, 108, 97, 103, 114, 97, 110, 59, 226, 132, 146, 108, 97, 109, 98, 100, 97, 59, 206, 187, 108, 97, 110, 103, 59, 226, 159, 168, 108, 97, 110, 103, 100, 59, 226, 166, 145, 108, 97, 110, 103, 108, 101, 59, 226, 159, 168, 108, 97, 112, 59, 226, 170, 133, 108, 97, 113, 117, 111, 194, 171, 108, 97, 113, 117, 111, 59, 194, 171, 108, 97, 114, 114, 59, 226, 134, 144, 108, 97, 114, 114, 98, 59, 226, 135, 164, 108, 97, 114, 114, 98, 102, 115, 59, 226, 164, 159, 108, 97, 114, 114, 102, 115, 59, 226, 164, 157, 108, 97, 114, 114, 104, 107, 59, 226, 134, 169, 108, 97, 114, 114, 108, 112, 59, 226, 134, 171, 108, 97, 114, 114, 112, 108, 59, 226, 164, 185, 108, 97, 114, 114, 115, 105, 109, 59, 226, 165, 179, 108, 97, 114, 114, 116, 108, 59, 226, 134, 162, 108, 97, 116, 59, 226, 170, 171, 108, 97, 116, 97, 105, 108, 59, 226, 164, 153, 108, 97, 116, 101, 59, 226, 170, 173, 108, 97, 116, 101, 115, 59, 226, 170, 173, 239, 184, 128, 108, 98, 97, 114, 114, 59, 226, 164, 140, 108, 98, 98, 114, 107, 59, 226, 157, 178, 108, 98, 114, 97, 99, 101, 59, 123, 108, 98, 114, 97, 99, 107, 59, 91, 108, 98, 114, 107, 101, 59, 226, 166, 139, 108, 98, 114, 107, 115, 108, 100, 59, 226, 166, 143, 108, 98, 114, 107, 115, 108, 117, 59, 226, 166, 141, 108, 99, 97, 114, 111, 110, 59, 196, 190, 108, 99, 101, 100, 105, 108, 59, 196, 188, 108, 99, 101, 105, 108, 59, 226, 140, 136, 108, 99, 117, 98, 59, 123, 108, 99, 121, 59, 208, 187, 108, 100, 99, 97, 59, 226, 164, 182, 108, 100, 113, 117, 111, 59, 226, 128, 156, 108, 100, 113, 117, 111, 114, 59, 226, 128, 158, 108, 100, 114, 100, 104, 97, 114, 59, 226, 165, 167, 108, 100, 114, 117, 115, 104, 97, 114, 59, 226, 165, 139, 108, 100, 115, 104, 59, 226, 134, 178, 108, 101, 59, 226, 137, 164, 108, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 134, 144, 108, 101, 102, 116, 97, 114, 114, 111, 119, 116, 97, 105, 108, 59, 226, 134, 162, 108, 101, 102, 116, 104, 97, 114, 112, 111, 111, 110, 100, 111, 119, 110, 59, 226, 134, 189, 108, 101, 102, 116, 104, 97, 114, 112, 111, 111, 110, 117, 112, 59, 226, 134, 188, 108, 101, 102, 116, 108, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 226, 135, 135, 108, 101, 102, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 134, 148, 108, 101, 102, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 226, 135, 134, 108, 101, 102, 116, 114, 105, 103, 104, 116, 104, 97, 114, 112, 111, 111, 110, 115, 59, 226, 135, 139, 108, 101, 102, 116, 114, 105, 103, 104, 116, 115, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 226, 134, 173, 108, 101, 102, 116, 116, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 226, 139, 139, 108, 101, 103, 59, 226, 139, 154, 108, 101, 113, 59, 226, 137, 164, 108, 101, 113, 113, 59, 226, 137, 166, 108, 101, 113, 115, 108, 97, 110, 116, 59, 226, 169, 189, 108, 101, 115, 59, 226, 169, 189, 108, 101, 115, 99, 99, 59, 226, 170, 168, 108, 101, 115, 100, 111, 116, 59, 226, 169, 191, 108, 101, 115, 100, 111, 116, 111, 59, 226, 170, 129, 108, 101, 115, 100, 111, 116, 111, 114, 59, 226, 170, 131, 108, 101, 115, 103, 59, 226, 139, 154, 239, 184, 128, 108, 101, 115, 103, 101, 115, 59, 226, 170, 147, 108, 101, 115, 115, 97, 112, 112, 114, 111, 120, 59, 226, 170, 133, 108, 101, 115, 115, 100, 111, 116, 59, 226, 139, 150, 108, 101, 115, 115, 101, 113, 103, 116, 114, 59, 226, 139, 154, 108, 101, 115, 115, 101, 113, 113, 103, 116, 114, 59, 226, 170, 139, 108, 101, 115, 115, 103, 116, 114, 59, 226, 137, 182, 108, 101, 115, 115, 115, 105, 109, 59, 226, 137, 178, 108, 102, 105, 115, 104, 116, 59, 226, 165, 188, 108, 102, 108, 111, 111, 114, 59, 226, 140, 138, 108, 102, 114, 59, 240, 157, 148, 169, 108, 103, 59, 226, 137, 182, 108, 103, 69, 59, 226, 170, 145, 108, 104, 97, 114, 100, 59, 226, 134, 189, 108, 104, 97, 114, 117, 59, 226, 134, 188, 108, 104, 97, 114, 117, 108, 59, 226, 165, 170, 108, 104, 98, 108, 107, 59, 226, 150, 132, 108, 106, 99, 121, 59, 209, 153, 108, 108, 59, 226, 137, 170, 108, 108, 97, 114, 114, 59, 226, 135, 135, 108, 108, 99, 111, 114, 110, 101, 114, 59, 226, 140, 158, 108, 108, 104, 97, 114, 100, 59, 226, 165, 171, 108, 108, 116, 114, 105, 59, 226, 151, 186, 108, 109, 105, 100, 111, 116, 59, 197, 128, 108, 109, 111, 117, 115, 116, 59, 226, 142, 176, 108, 109, 111, 117, 115, 116, 97, 99, 104, 101, 59, 226, 142, 176, 108, 110, 69, 59, 226, 137, 168, 108, 110, 97, 112, 59, 226, 170, 137, 108, 110, 97, 112, 112, 114, 111, 120, 59, 226, 170, 137, 108, 110, 101, 59, 226, 170, 135, 108, 110, 101, 113, 59, 226, 170, 135, 108, 110, 101, 113, 113, 59, 226, 137, 168, 108, 110, 115, 105, 109, 59, 226, 139, 166, 108, 111, 97, 110, 103, 59, 226, 159, 172, 108, 111, 97, 114, 114, 59, 226, 135, 189, 108, 111, 98, 114, 107, 59, 226, 159, 166, 108, 111, 110, 103, 108, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 159, 181, 108, 111, 110, 103, 108, 101, 102, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 159, 183, 108, 111, 110, 103, 109, 97, 112, 115, 116, 111, 59, 226, 159, 188, 108, 111, 110, 103, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 159, 182, 108, 111, 111, 112, 97, 114, 114, 111, 119, 108, 101, 102, 116, 59, 226, 134, 171, 108, 111, 111, 112, 97, 114, 114, 111, 119, 114, 105, 103, 104, 116, 59, 226, 134, 172, 108, 111, 112, 97, 114, 59, 226, 166, 133, 108, 111, 112, 102, 59, 240, 157, 149, 157, 108, 111, 112, 108, 117, 115, 59, 226, 168, 173, 108, 111, 116, 105, 109, 101, 115, 59, 226, 168, 180, 108, 111, 119, 97, 115, 116, 59, 226, 136, 151, 108, 111, 119, 98, 97, 114, 59, 95, 108, 111, 122, 59, 226, 151, 138, 108, 111, 122, 101, 110, 103, 101, 59, 226, 151, 138, 108, 111, 122, 102, 59, 226, 167, 171, 108, 112, 97, 114, 59, 40, 108, 112, 97, 114, 108, 116, 59, 226, 166, 147, 108, 114, 97, 114, 114, 59, 226, 135, 134, 108, 114, 99, 111, 114, 110, 101, 114, 59, 226, 140, 159, 108, 114, 104, 97, 114, 59, 226, 135, 139, 108, 114, 104, 97, 114, 100, 59, 226, 165, 173, 108, 114, 109, 59, 226, 128, 142, 108, 114, 116, 114, 105, 59, 226, 138, 191, 108, 115, 97, 113, 117, 111, 59, 226, 128, 185, 108, 115, 99, 114, 59, 240, 157, 147, 129, 108, 115, 104, 59, 226, 134, 176, 108, 115, 105, 109, 59, 226, 137, 178, 108, 115, 105, 109, 101, 59, 226, 170, 141, 108, 115, 105, 109, 103, 59, 226, 170, 143, 108, 115, 113, 98, 59, 91, 108, 115, 113, 117, 111, 59, 226, 128, 152, 108, 115, 113, 117, 111, 114, 59, 226, 128, 154, 108, 115, 116, 114, 111, 107, 59, 197, 130, 108, 116, 60, 108, 116, 59, 60, 108, 116, 99, 99, 59, 226, 170, 166, 108, 116, 99, 105, 114, 59, 226, 169, 185, 108, 116, 100, 111, 116, 59, 226, 139, 150, 108, 116, 104, 114, 101, 101, 59, 226, 139, 139, 108, 116, 105, 109, 101, 115, 59, 226, 139, 137, 108, 116, 108, 97, 114, 114, 59, 226, 165, 182, 108, 116, 113, 117, 101, 115, 116, 59, 226, 169, 187, 108, 116, 114, 80, 97, 114, 59, 226, 166, 150, 108, 116, 114, 105, 59, 226, 151, 131, 108, 116, 114, 105, 101, 59, 226, 138, 180, 108, 116, 114, 105, 102, 59, 226, 151, 130, 108, 117, 114, 100, 115, 104, 97, 114, 59, 226, 165, 138, 108, 117, 114, 117, 104, 97, 114, 59, 226, 165, 166, 108, 118, 101, 114, 116, 110, 101, 113, 113, 59, 226, 137, 168, 239, 184, 128, 108, 118, 110, 69, 59, 226, 137, 168, 239, 184, 128, 109, 68, 68, 111, 116, 59, 226, 136, 186, 109, 97, 99, 114, 194, 175, 109, 97, 99, 114, 59, 194, 175, 109, 97, 108, 101, 59, 226, 153, 130, 109, 97, 108, 116, 59, 226, 156, 160, 109, 97, 108, 116, 101, 115, 101, 59, 226, 156, 160, 109, 97, 112, 59, 226, 134, 166, 109, 97, 112, 115, 116, 111, 59, 226, 134, 166, 109, 97, 112, 115, 116, 111, 100, 111, 119, 110, 59, 226, 134, 167, 109, 97, 112, 115, 116, 111, 108, 101, 102, 116, 59, 226, 134, 164, 109, 97, 112, 115, 116, 111, 117, 112, 59, 226, 134, 165, 109, 97, 114, 107, 101, 114, 59, 226, 150, 174, 109, 99, 111, 109, 109, 97, 59, 226, 168, 169, 109, 99, 121, 59, 208, 188, 109, 100, 97, 115, 104, 59, 226, 128, 148, 109, 101, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 226, 136, 161, 109, 102, 114, 59, 240, 157, 148, 170, 109, 104, 111, 59, 226, 132, 167, 109, 105, 99, 114, 111, 194, 181, 109, 105, 99, 114, 111, 59, 194, 181, 109, 105, 100, 59, 226, 136, 163, 109, 105, 100, 97, 115, 116, 59, 42, 109, 105, 100, 99, 105, 114, 59, 226, 171, 176, 109, 105, 100, 100, 111, 116, 194, 183, 109, 105, 100, 100, 111, 116, 59, 194, 183, 109, 105, 110, 117, 115, 59, 226, 136, 146, 109, 105, 110, 117, 115, 98, 59, 226, 138, 159, 109, 105, 110, 117, 115, 100, 59, 226, 136, 184, 109, 105, 110, 117, 115, 100, 117, 59, 226, 168, 170, 109, 108, 99, 112, 59, 226, 171, 155, 109, 108, 100, 114, 59, 226, 128, 166, 109, 110, 112, 108, 117, 115, 59, 226, 136, 147, 109, 111, 100, 101, 108, 115, 59, 226, 138, 167, 109, 111, 112, 102, 59, 240, 157, 149, 158, 109, 112, 59, 226, 136, 147, 109, 115, 99, 114, 59, 240, 157, 147, 130, 109, 115, 116, 112, 111, 115, 59, 226, 136, 190, 109, 117, 59, 206, 188, 109, 117, 108, 116, 105, 109, 97, 112, 59, 226, 138, 184, 109, 117, 109, 97, 112, 59, 226, 138, 184, 110, 71, 103, 59, 226, 139, 153, 204, 184, 110, 71, 116, 59, 226, 137, 171, 226, 131, 146, 110, 71, 116, 118, 59, 226, 137, 171, 204, 184, 110, 76, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 135, 141, 110, 76, 101, 102, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 135, 142, 110, 76, 108, 59, 226, 139, 152, 204, 184, 110, 76, 116, 59, 226, 137, 170, 226, 131, 146, 110, 76, 116, 118, 59, 226, 137, 170, 204, 184, 110, 82, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 135, 143, 110, 86, 68, 97, 115, 104, 59, 226, 138, 175, 110, 86, 100, 97, 115, 104, 59, 226, 138, 174, 110, 97, 98, 108, 97, 59, 226, 136, 135, 110, 97, 99, 117, 116, 101, 59, 197, 132, 110, 97, 110, 103, 59, 226, 136, 160, 226, 131, 146, 110, 97, 112, 59, 226, 137, 137, 110, 97, 112, 69, 59, 226, 169, 176, 204, 184, 110, 97, 112, 105, 100, 59, 226, 137, 139, 204, 184, 110, 97, 112, 111, 115, 59, 197, 137, 110, 97, 112, 112, 114, 111, 120, 59, 226, 137, 137, 110, 97, 116, 117, 114, 59, 226, 153, 174, 110, 97, 116, 117, 114, 97, 108, 59, 226, 153, 174, 110, 97, 116, 117, 114, 97, 108, 115, 59, 226, 132, 149, 110, 98, 115, 112, 194, 160, 110, 98, 115, 112, 59, 194, 160, 110, 98, 117, 109, 112, 59, 226, 137, 142, 204, 184, 110, 98, 117, 109, 112, 101, 59, 226, 137, 143, 204, 184, 110, 99, 97, 112, 59, 226, 169, 131, 110, 99, 97, 114, 111, 110, 59, 197, 136, 110, 99, 101, 100, 105, 108, 59, 197, 134, 110, 99, 111, 110, 103, 59, 226, 137, 135, 110, 99, 111, 110, 103, 100, 111, 116, 59, 226, 169, 173, 204, 184, 110, 99, 117, 112, 59, 226, 169, 130, 110, 99, 121, 59, 208, 189, 110, 100, 97, 115, 104, 59, 226, 128, 147, 110, 101, 59, 226, 137, 160, 110, 101, 65, 114, 114, 59, 226, 135, 151, 110, 101, 97, 114, 104, 107, 59, 226, 164, 164, 110, 101, 97, 114, 114, 59, 226, 134, 151, 110, 101, 97, 114, 114, 111, 119, 59, 226, 134, 151, 110, 101, 100, 111, 116, 59, 226, 137, 144, 204, 184, 110, 101, 113, 117, 105, 118, 59, 226, 137, 162, 110, 101, 115, 101, 97, 114, 59, 226, 164, 168, 110, 101, 115, 105, 109, 59, 226, 137, 130, 204, 184, 110, 101, 120, 105, 115, 116, 59, 226, 136, 132, 110, 101, 120, 105, 115, 116, 115, 59, 226, 136, 132, 110, 102, 114, 59, 240, 157, 148, 171, 110, 103, 69, 59, 226, 137, 167, 204, 184, 110, 103, 101, 59, 226, 137, 177, 110, 103, 101, 113, 59, 226, 137, 177, 110, 103, 101, 113, 113, 59, 226, 137, 167, 204, 184, 110, 103, 101, 113, 115, 108, 97, 110, 116, 59, 226, 169, 190, 204, 184, 110, 103, 101, 115, 59, 226, 169, 190, 204, 184, 110, 103, 115, 105, 109, 59, 226, 137, 181, 110, 103, 116, 59, 226, 137, 175, 110, 103, 116, 114, 59, 226, 137, 175, 110, 104, 65, 114, 114, 59, 226, 135, 142, 110, 104, 97, 114, 114, 59, 226, 134, 174, 110, 104, 112, 97, 114, 59, 226, 171, 178, 110, 105, 59, 226, 136, 139, 110, 105, 115, 59, 226, 139, 188, 110, 105, 115, 100, 59, 226, 139, 186, 110, 105, 118, 59, 226, 136, 139, 110, 106, 99, 121, 59, 209, 154, 110, 108, 65, 114, 114, 59, 226, 135, 141, 110, 108, 69, 59, 226, 137, 166, 204, 184, 110, 108, 97, 114, 114, 59, 226, 134, 154, 110, 108, 100, 114, 59, 226, 128, 165, 110, 108, 101, 59, 226, 137, 176, 110, 108, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 134, 154, 110, 108, 101, 102, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 134, 174, 110, 108, 101, 113, 59, 226, 137, 176, 110, 108, 101, 113, 113, 59, 226, 137, 166, 204, 184, 110, 108, 101, 113, 115, 108, 97, 110, 116, 59, 226, 169, 189, 204, 184, 110, 108, 101, 115, 59, 226, 169, 189, 204, 184, 110, 108, 101, 115, 115, 59, 226, 137, 174, 110, 108, 115, 105, 109, 59, 226, 137, 180, 110, 108, 116, 59, 226, 137, 174, 110, 108, 116, 114, 105, 59, 226, 139, 170, 110, 108, 116, 114, 105, 101, 59, 226, 139, 172, 110, 109, 105, 100, 59, 226, 136, 164, 110, 111, 112, 102, 59, 240, 157, 149, 159, 110, 111, 116, 194, 172, 110, 111, 116, 59, 194, 172, 110, 111, 116, 105, 110, 59, 226, 136, 137, 110, 111, 116, 105, 110, 69, 59, 226, 139, 185, 204, 184, 110, 111, 116, 105, 110, 100, 111, 116, 59, 226, 139, 181, 204, 184, 110, 111, 116, 105, 110, 118, 97, 59, 226, 136, 137, 110, 111, 116, 105, 110, 118, 98, 59, 226, 139, 183, 110, 111, 116, 105, 110, 118, 99, 59, 226, 139, 182, 110, 111, 116, 110, 105, 59, 226, 136, 140, 110, 111, 116, 110, 105, 118, 97, 59, 226, 136, 140, 110, 111, 116, 110, 105, 118, 98, 59, 226, 139, 190, 110, 111, 116, 110, 105, 118, 99, 59, 226, 139, 189, 110, 112, 97, 114, 59, 226, 136, 166, 110, 112, 97, 114, 97, 108, 108, 101, 108, 59, 226, 136, 166, 110, 112, 97, 114, 115, 108, 59, 226, 171, 189, 226, 131, 165, 110, 112, 97, 114, 116, 59, 226, 136, 130, 204, 184, 110, 112, 111, 108, 105, 110, 116, 59, 226, 168, 148, 110, 112, 114, 59, 226, 138, 128, 110, 112, 114, 99, 117, 101, 59, 226, 139, 160, 110, 112, 114, 101, 59, 226, 170, 175, 204, 184, 110, 112, 114, 101, 99, 59, 226, 138, 128, 110, 112, 114, 101, 99, 101, 113, 59, 226, 170, 175, 204, 184, 110, 114, 65, 114, 114, 59, 226, 135, 143, 110, 114, 97, 114, 114, 59, 226, 134, 155, 110, 114, 97, 114, 114, 99, 59, 226, 164, 179, 204, 184, 110, 114, 97, 114, 114, 119, 59, 226, 134, 157, 204, 184, 110, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 134, 155, 110, 114, 116, 114, 105, 59, 226, 139, 171, 110, 114, 116, 114, 105, 101, 59, 226, 139, 173, 110, 115, 99, 59, 226, 138, 129, 110, 115, 99, 99, 117, 101, 59, 226, 139, 161, 110, 115, 99, 101, 59, 226, 170, 176, 204, 184, 110, 115, 99, 114, 59, 240, 157, 147, 131, 110, 115, 104, 111, 114, 116, 109, 105, 100, 59, 226, 136, 164, 110, 115, 104, 111, 114, 116, 112, 97, 114, 97, 108, 108, 101, 108, 59, 226, 136, 166, 110, 115, 105, 109, 59, 226, 137, 129, 110, 115, 105, 109, 101, 59, 226, 137, 132, 110, 115, 105, 109, 101, 113, 59, 226, 137, 132, 110, 115, 109, 105, 100, 59, 226, 136, 164, 110, 115, 112, 97, 114, 59, 226, 136, 166, 110, 115, 113, 115, 117, 98, 101, 59, 226, 139, 162, 110, 115, 113, 115, 117, 112, 101, 59, 226, 139, 163, 110, 115, 117, 98, 59, 226, 138, 132, 110, 115, 117, 98, 69, 59, 226, 171, 133, 204, 184, 110, 115, 117, 98, 101, 59, 226, 138, 136, 110, 115, 117, 98, 115, 101, 116, 59, 226, 138, 130, 226, 131, 146, 110, 115, 117, 98, 115, 101, 116, 101, 113, 59, 226, 138, 136, 110, 115, 117, 98, 115, 101, 116, 101, 113, 113, 59, 226, 171, 133, 204, 184, 110, 115, 117, 99, 99, 59, 226, 138, 129, 110, 115, 117, 99, 99, 101, 113, 59, 226, 170, 176, 204, 184, 110, 115, 117, 112, 59, 226, 138, 133, 110, 115, 117, 112, 69, 59, 226, 171, 134, 204, 184, 110, 115, 117, 112, 101, 59, 226, 138, 137, 110, 115, 117, 112, 115, 101, 116, 59, 226, 138, 131, 226, 131, 146, 110, 115, 117, 112, 115, 101, 116, 101, 113, 59, 226, 138, 137, 110, 115, 117, 112, 115, 101, 116, 101, 113, 113, 59, 226, 171, 134, 204, 184, 110, 116, 103, 108, 59, 226, 137, 185, 110, 116, 105, 108, 100, 101, 195, 177, 110, 116, 105, 108, 100, 101, 59, 195, 177, 110, 116, 108, 103, 59, 226, 137, 184, 110, 116, 114, 105, 97, 110, 103, 108, 101, 108, 101, 102, 116, 59, 226, 139, 170, 110, 116, 114, 105, 97, 110, 103, 108, 101, 108, 101, 102, 116, 101, 113, 59, 226, 139, 172, 110, 116, 114, 105, 97, 110, 103, 108, 101, 114, 105, 103, 104, 116, 59, 226, 139, 171, 110, 116, 114, 105, 97, 110, 103, 108, 101, 114, 105, 103, 104, 116, 101, 113, 59, 226, 139, 173, 110, 117, 59, 206, 189, 110, 117, 109, 59, 35, 110, 117, 109, 101, 114, 111, 59, 226, 132, 150, 110, 117, 109, 115, 112, 59, 226, 128, 135, 110, 118, 68, 97, 115, 104, 59, 226, 138, 173, 110, 118, 72, 97, 114, 114, 59, 226, 164, 132, 110, 118, 97, 112, 59, 226, 137, 141, 226, 131, 146, 110, 118, 100, 97, 115, 104, 59, 226, 138, 172, 110, 118, 103, 101, 59, 226, 137, 165, 226, 131, 146, 110, 118, 103, 116, 59, 62, 226, 131, 146, 110, 118, 105, 110, 102, 105, 110, 59, 226, 167, 158, 110, 118, 108, 65, 114, 114, 59, 226, 164, 130, 110, 118, 108, 101, 59, 226, 137, 164, 226, 131, 146, 110, 118, 108, 116, 59, 60, 226, 131, 146, 110, 118, 108, 116, 114, 105, 101, 59, 226, 138, 180, 226, 131, 146, 110, 118, 114, 65, 114, 114, 59, 226, 164, 131, 110, 118, 114, 116, 114, 105, 101, 59, 226, 138, 181, 226, 131, 146, 110, 118, 115, 105, 109, 59, 226, 136, 188, 226, 131, 146, 110, 119, 65, 114, 114, 59, 226, 135, 150, 110, 119, 97, 114, 104, 107, 59, 226, 164, 163, 110, 119, 97, 114, 114, 59, 226, 134, 150, 110, 119, 97, 114, 114, 111, 119, 59, 226, 134, 150, 110, 119, 110, 101, 97, 114, 59, 226, 164, 167, 111, 83, 59, 226, 147, 136, 111, 97, 99, 117, 116, 101, 195, 179, 111, 97, 99, 117, 116, 101, 59, 195, 179, 111, 97, 115, 116, 59, 226, 138, 155, 111, 99, 105, 114, 59, 226, 138, 154, 111, 99, 105, 114, 99, 195, 180, 111, 99, 105, 114, 99, 59, 195, 180, 111, 99, 121, 59, 208, 190, 111, 100, 97, 115, 104, 59, 226, 138, 157, 111, 100, 98, 108, 97, 99, 59, 197, 145, 111, 100, 105, 118, 59, 226, 168, 184, 111, 100, 111, 116, 59, 226, 138, 153, 111, 100, 115, 111, 108, 100, 59, 226, 166, 188, 111, 101, 108, 105, 103, 59, 197, 147, 111, 102, 99, 105, 114, 59, 226, 166, 191, 111, 102, 114, 59, 240, 157, 148, 172, 111, 103, 111, 110, 59, 203, 155, 111, 103, 114, 97, 118, 101, 195, 178, 111, 103, 114, 97, 118, 101, 59, 195, 178, 111, 103, 116, 59, 226, 167, 129, 111, 104, 98, 97, 114, 59, 226, 166, 181, 111, 104, 109, 59, 206, 169, 111, 105, 110, 116, 59, 226, 136, 174, 111, 108, 97, 114, 114, 59, 226, 134, 186, 111, 108, 99, 105, 114, 59, 226, 166, 190, 111, 108, 99, 114, 111, 115, 115, 59, 226, 166, 187, 111, 108, 105, 110, 101, 59, 226, 128, 190, 111, 108, 116, 59, 226, 167, 128, 111, 109, 97, 99, 114, 59, 197, 141, 111, 109, 101, 103, 97, 59, 207, 137, 111, 109, 105, 99, 114, 111, 110, 59, 206, 191, 111, 109, 105, 100, 59, 226, 166, 182, 111, 109, 105, 110, 117, 115, 59, 226, 138, 150, 111, 111, 112, 102, 59, 240, 157, 149, 160, 111, 112, 97, 114, 59, 226, 166, 183, 111, 112, 101, 114, 112, 59, 226, 166, 185, 111, 112, 108, 117, 115, 59, 226, 138, 149, 111, 114, 59, 226, 136, 168, 111, 114, 97, 114, 114, 59, 226, 134, 187, 111, 114, 100, 59, 226, 169, 157, 111, 114, 100, 101, 114, 59, 226, 132, 180, 111, 114, 100, 101, 114, 111, 102, 59, 226, 132, 180, 111, 114, 100, 102, 194, 170, 111, 114, 100, 102, 59, 194, 170, 111, 114, 100, 109, 194, 186, 111, 114, 100, 109, 59, 194, 186, 111, 114, 105, 103, 111, 102, 59, 226, 138, 182, 111, 114, 111, 114, 59, 226, 169, 150, 111, 114, 115, 108, 111, 112, 101, 59, 226, 169, 151, 111, 114, 118, 59, 226, 169, 155, 111, 115, 99, 114, 59, 226, 132, 180, 111, 115, 108, 97, 115, 104, 195, 184, 111, 115, 108, 97, 115, 104, 59, 195, 184, 111, 115, 111, 108, 59, 226, 138, 152, 111, 116, 105, 108, 100, 101, 195, 181, 111, 116, 105, 108, 100, 101, 59, 195, 181, 111, 116, 105, 109, 101, 115, 59, 226, 138, 151, 111, 116, 105, 109, 101, 115, 97, 115, 59, 226, 168, 182, 111, 117, 109, 108, 195, 182, 111, 117, 109, 108, 59, 195, 182, 111, 118, 98, 97, 114, 59, 226, 140, 189, 112, 97, 114, 59, 226, 136, 165, 112, 97, 114, 97, 194, 182, 112, 97, 114, 97, 59, 194, 182, 112, 97, 114, 97, 108, 108, 101, 108, 59, 226, 136, 165, 112, 97, 114, 115, 105, 109, 59, 226, 171, 179, 112, 97, 114, 115, 108, 59, 226, 171, 189, 112, 97, 114, 116, 59, 226, 136, 130, 112, 99, 121, 59, 208, 191, 112, 101, 114, 99, 110, 116, 59, 37, 112, 101, 114, 105, 111, 100, 59, 46, 112, 101, 114, 109, 105, 108, 59, 226, 128, 176, 112, 101, 114, 112, 59, 226, 138, 165, 112, 101, 114, 116, 101, 110, 107, 59, 226, 128, 177, 112, 102, 114, 59, 240, 157, 148, 173, 112, 104, 105, 59, 207, 134, 112, 104, 105, 118, 59, 207, 149, 112, 104, 109, 109, 97, 116, 59, 226, 132, 179, 112, 104, 111, 110, 101, 59, 226, 152, 142, 112, 105, 59, 207, 128, 112, 105, 116, 99, 104, 102, 111, 114, 107, 59, 226, 139, 148, 112, 105, 118, 59, 207, 150, 112, 108, 97, 110, 99, 107, 59, 226, 132, 143, 112, 108, 97, 110, 99, 107, 104, 59, 226, 132, 142, 112, 108, 97, 110, 107, 118, 59, 226, 132, 143, 112, 108, 117, 115, 59, 43, 112, 108, 117, 115, 97, 99, 105, 114, 59, 226, 168, 163, 112, 108, 117, 115, 98, 59, 226, 138, 158, 112, 108, 117, 115, 99, 105, 114, 59, 226, 168, 162, 112, 108, 117, 115, 100, 111, 59, 226, 136, 148, 112, 108, 117, 115, 100, 117, 59, 226, 168, 165, 112, 108, 117, 115, 101, 59, 226, 169, 178, 112, 108, 117, 115, 109, 110, 194, 177, 112, 108, 117, 115, 109, 110, 59, 194, 177, 112, 108, 117, 115, 115, 105, 109, 59, 226, 168, 166, 112, 108, 117, 115, 116, 119, 111, 59, 226, 168, 167, 112, 109, 59, 194, 177, 112, 111, 105, 110, 116, 105, 110, 116, 59, 226, 168, 149, 112, 111, 112, 102, 59, 240, 157, 149, 161, 112, 111, 117, 110, 100, 194, 163, 112, 111, 117, 110, 100, 59, 194, 163, 112, 114, 59, 226, 137, 186, 112, 114, 69, 59, 226, 170, 179, 112, 114, 97, 112, 59, 226, 170, 183, 112, 114, 99, 117, 101, 59, 226, 137, 188, 112, 114, 101, 59, 226, 170, 175, 112, 114, 101, 99, 59, 226, 137, 186, 112, 114, 101, 99, 97, 112, 112, 114, 111, 120, 59, 226, 170, 183, 112, 114, 101, 99, 99, 117, 114, 108, 121, 101, 113, 59, 226, 137, 188, 112, 114, 101, 99, 101, 113, 59, 226, 170, 175, 112, 114, 101, 99, 110, 97, 112, 112, 114, 111, 120, 59, 226, 170, 185, 112, 114, 101, 99, 110, 101, 113, 113, 59, 226, 170, 181, 112, 114, 101, 99, 110, 115, 105, 109, 59, 226, 139, 168, 112, 114, 101, 99, 115, 105, 109, 59, 226, 137, 190, 112, 114, 105, 109, 101, 59, 226, 128, 178, 112, 114, 105, 109, 101, 115, 59, 226, 132, 153, 112, 114, 110, 69, 59, 226, 170, 181, 112, 114, 110, 97, 112, 59, 226, 170, 185, 112, 114, 110, 115, 105, 109, 59, 226, 139, 168, 112, 114, 111, 100, 59, 226, 136, 143, 112, 114, 111, 102, 97, 108, 97, 114, 59, 226, 140, 174, 112, 114, 111, 102, 108, 105, 110, 101, 59, 226, 140, 146, 112, 114, 111, 102, 115, 117, 114, 102, 59, 226, 140, 147, 112, 114, 111, 112, 59, 226, 136, 157, 112, 114, 111, 112, 116, 111, 59, 226, 136, 157, 112, 114, 115, 105, 109, 59, 226, 137, 190, 112, 114, 117, 114, 101, 108, 59, 226, 138, 176, 112, 115, 99, 114, 59, 240, 157, 147, 133, 112, 115, 105, 59, 207, 136, 112, 117, 110, 99, 115, 112, 59, 226, 128, 136, 113, 102, 114, 59, 240, 157, 148, 174, 113, 105, 110, 116, 59, 226, 168, 140, 113, 111, 112, 102, 59, 240, 157, 149, 162, 113, 112, 114, 105, 109, 101, 59, 226, 129, 151, 113, 115, 99, 114, 59, 240, 157, 147, 134, 113, 117, 97, 116, 101, 114, 110, 105, 111, 110, 115, 59, 226, 132, 141, 113, 117, 97, 116, 105, 110, 116, 59, 226, 168, 150, 113, 117, 101, 115, 116, 59, 63, 113, 117, 101, 115, 116, 101, 113, 59, 226, 137, 159, 113, 117, 111, 116, 34, 113, 117, 111, 116, 59, 34, 114, 65, 97, 114, 114, 59, 226, 135, 155, 114, 65, 114, 114, 59, 226, 135, 146, 114, 65, 116, 97, 105, 108, 59, 226, 164, 156, 114, 66, 97, 114, 114, 59, 226, 164, 143, 114, 72, 97, 114, 59, 226, 165, 164, 114, 97, 99, 101, 59, 226, 136, 189, 204, 177, 114, 97, 99, 117, 116, 101, 59, 197, 149, 114, 97, 100, 105, 99, 59, 226, 136, 154, 114, 97, 101, 109, 112, 116, 121, 118, 59, 226, 166, 179, 114, 97, 110, 103, 59, 226, 159, 169, 114, 97, 110, 103, 100, 59, 226, 166, 146, 114, 97, 110, 103, 101, 59, 226, 166, 165, 114, 97, 110, 103, 108, 101, 59, 226, 159, 169, 114, 97, 113, 117, 111, 194, 187, 114, 97, 113, 117, 111, 59, 194, 187, 114, 97, 114, 114, 59, 226, 134, 146, 114, 97, 114, 114, 97, 112, 59, 226, 165, 181, 114, 97, 114, 114, 98, 59, 226, 135, 165, 114, 97, 114, 114, 98, 102, 115, 59, 226, 164, 160, 114, 97, 114, 114, 99, 59, 226, 164, 179, 114, 97, 114, 114, 102, 115, 59, 226, 164, 158, 114, 97, 114, 114, 104, 107, 59, 226, 134, 170, 114, 97, 114, 114, 108, 112, 59, 226, 134, 172, 114, 97, 114, 114, 112, 108, 59, 226, 165, 133, 114, 97, 114, 114, 115, 105, 109, 59, 226, 165, 180, 114, 97, 114, 114, 116, 108, 59, 226, 134, 163, 114, 97, 114, 114, 119, 59, 226, 134, 157, 114, 97, 116, 97, 105, 108, 59, 226, 164, 154, 114, 97, 116, 105, 111, 59, 226, 136, 182, 114, 97, 116, 105, 111, 110, 97, 108, 115, 59, 226, 132, 154, 114, 98, 97, 114, 114, 59, 226, 164, 141, 114, 98, 98, 114, 107, 59, 226, 157, 179, 114, 98, 114, 97, 99, 101, 59, 125, 114, 98, 114, 97, 99, 107, 59, 93, 114, 98, 114, 107, 101, 59, 226, 166, 140, 114, 98, 114, 107, 115, 108, 100, 59, 226, 166, 142, 114, 98, 114, 107, 115, 108, 117, 59, 226, 166, 144, 114, 99, 97, 114, 111, 110, 59, 197, 153, 114, 99, 101, 100, 105, 108, 59, 197, 151, 114, 99, 101, 105, 108, 59, 226, 140, 137, 114, 99, 117, 98, 59, 125, 114, 99, 121, 59, 209, 128, 114, 100, 99, 97, 59, 226, 164, 183, 114, 100, 108, 100, 104, 97, 114, 59, 226, 165, 169, 114, 100, 113, 117, 111, 59, 226, 128, 157, 114, 100, 113, 117, 111, 114, 59, 226, 128, 157, 114, 100, 115, 104, 59, 226, 134, 179, 114, 101, 97, 108, 59, 226, 132, 156, 114, 101, 97, 108, 105, 110, 101, 59, 226, 132, 155, 114, 101, 97, 108, 112, 97, 114, 116, 59, 226, 132, 156, 114, 101, 97, 108, 115, 59, 226, 132, 157, 114, 101, 99, 116, 59, 226, 150, 173, 114, 101, 103, 194, 174, 114, 101, 103, 59, 194, 174, 114, 102, 105, 115, 104, 116, 59, 226, 165, 189, 114, 102, 108, 111, 111, 114, 59, 226, 140, 139, 114, 102, 114, 59, 240, 157, 148, 175, 114, 104, 97, 114, 100, 59, 226, 135, 129, 114, 104, 97, 114, 117, 59, 226, 135, 128, 114, 104, 97, 114, 117, 108, 59, 226, 165, 172, 114, 104, 111, 59, 207, 129, 114, 104, 111, 118, 59, 207, 177, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 134, 146, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 116, 97, 105, 108, 59, 226, 134, 163, 114, 105, 103, 104, 116, 104, 97, 114, 112, 111, 111, 110, 100, 111, 119, 110, 59, 226, 135, 129, 114, 105, 103, 104, 116, 104, 97, 114, 112, 111, 111, 110, 117, 112, 59, 226, 135, 128, 114, 105, 103, 104, 116, 108, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 226, 135, 132, 114, 105, 103, 104, 116, 108, 101, 102, 116, 104, 97, 114, 112, 111, 111, 110, 115, 59, 226, 135, 140, 114, 105, 103, 104, 116, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 226, 135, 137, 114, 105, 103, 104, 116, 115, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 226, 134, 157, 114, 105, 103, 104, 116, 116, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 226, 139, 140, 114, 105, 110, 103, 59, 203, 154, 114, 105, 115, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 226, 137, 147, 114, 108, 97, 114, 114, 59, 226, 135, 132, 114, 108, 104, 97, 114, 59, 226, 135, 140, 114, 108, 109, 59, 226, 128, 143, 114, 109, 111, 117, 115, 116, 59, 226, 142, 177, 114, 109, 111, 117, 115, 116, 97, 99, 104, 101, 59, 226, 142, 177, 114, 110, 109, 105, 100, 59, 226, 171, 174, 114, 111, 97, 110, 103, 59, 226, 159, 173, 114, 111, 97, 114, 114, 59, 226, 135, 190, 114, 111, 98, 114, 107, 59, 226, 159, 167, 114, 111, 112, 97, 114, 59, 226, 166, 134, 114, 111, 112, 102, 59, 240, 157, 149, 163, 114, 111, 112, 108, 117, 115, 59, 226, 168, 174, 114, 111, 116, 105, 109, 101, 115, 59, 226, 168, 181, 114, 112, 97, 114, 59, 41, 114, 112, 97, 114, 103, 116, 59, 226, 166, 148, 114, 112, 112, 111, 108, 105, 110, 116, 59, 226, 168, 146, 114, 114, 97, 114, 114, 59, 226, 135, 137, 114, 115, 97, 113, 117, 111, 59, 226, 128, 186, 114, 115, 99, 114, 59, 240, 157, 147, 135, 114, 115, 104, 59, 226, 134, 177, 114, 115, 113, 98, 59, 93, 114, 115, 113, 117, 111, 59, 226, 128, 153, 114, 115, 113, 117, 111, 114, 59, 226, 128, 153, 114, 116, 104, 114, 101, 101, 59, 226, 139, 140, 114, 116, 105, 109, 101, 115, 59, 226, 139, 138, 114, 116, 114, 105, 59, 226, 150, 185, 114, 116, 114, 105, 101, 59, 226, 138, 181, 114, 116, 114, 105, 102, 59, 226, 150, 184, 114, 116, 114, 105, 108, 116, 114, 105, 59, 226, 167, 142, 114, 117, 108, 117, 104, 97, 114, 59, 226, 165, 168, 114, 120, 59, 226, 132, 158, 115, 97, 99, 117, 116, 101, 59, 197, 155, 115, 98, 113, 117, 111, 59, 226, 128, 154, 115, 99, 59, 226, 137, 187, 115, 99, 69, 59, 226, 170, 180, 115, 99, 97, 112, 59, 226, 170, 184, 115, 99, 97, 114, 111, 110, 59, 197, 161, 115, 99, 99, 117, 101, 59, 226, 137, 189, 115, 99, 101, 59, 226, 170, 176, 115, 99, 101, 100, 105, 108, 59, 197, 159, 115, 99, 105, 114, 99, 59, 197, 157, 115, 99, 110, 69, 59, 226, 170, 182, 115, 99, 110, 97, 112, 59, 226, 170, 186, 115, 99, 110, 115, 105, 109, 59, 226, 139, 169, 115, 99, 112, 111, 108, 105, 110, 116, 59, 226, 168, 147, 115, 99, 115, 105, 109, 59, 226, 137, 191, 115, 99, 121, 59, 209, 129, 115, 100, 111, 116, 59, 226, 139, 133, 115, 100, 111, 116, 98, 59, 226, 138, 161, 115, 100, 111, 116, 101, 59, 226, 169, 166, 115, 101, 65, 114, 114, 59, 226, 135, 152, 115, 101, 97, 114, 104, 107, 59, 226, 164, 165, 115, 101, 97, 114, 114, 59, 226, 134, 152, 115, 101, 97, 114, 114, 111, 119, 59, 226, 134, 152, 115, 101, 99, 116, 194, 167, 115, 101, 99, 116, 59, 194, 167, 115, 101, 109, 105, 59, 59, 115, 101, 115, 119, 97, 114, 59, 226, 164, 169, 115, 101, 116, 109, 105, 110, 117, 115, 59, 226, 136, 150, 115, 101, 116, 109, 110, 59, 226, 136, 150, 115, 101, 120, 116, 59, 226, 156, 182, 115, 102, 114, 59, 240, 157, 148, 176, 115, 102, 114, 111, 119, 110, 59, 226, 140, 162, 115, 104, 97, 114, 112, 59, 226, 153, 175, 115, 104, 99, 104, 99, 121, 59, 209, 137, 115, 104, 99, 121, 59, 209, 136, 115, 104, 111, 114, 116, 109, 105, 100, 59, 226, 136, 163, 115, 104, 111, 114, 116, 112, 97, 114, 97, 108, 108, 101, 108, 59, 226, 136, 165, 115, 104, 121, 194, 173, 115, 104, 121, 59, 194, 173, 115, 105, 103, 109, 97, 59, 207, 131, 115, 105, 103, 109, 97, 102, 59, 207, 130, 115, 105, 103, 109, 97, 118, 59, 207, 130, 115, 105, 109, 59, 226, 136, 188, 115, 105, 109, 100, 111, 116, 59, 226, 169, 170, 115, 105, 109, 101, 59, 226, 137, 131, 115, 105, 109, 101, 113, 59, 226, 137, 131, 115, 105, 109, 103, 59, 226, 170, 158, 115, 105, 109, 103, 69, 59, 226, 170, 160, 115, 105, 109, 108, 59, 226, 170, 157, 115, 105, 109, 108, 69, 59, 226, 170, 159, 115, 105, 109, 110, 101, 59, 226, 137, 134, 115, 105, 109, 112, 108, 117, 115, 59, 226, 168, 164, 115, 105, 109, 114, 97, 114, 114, 59, 226, 165, 178, 115, 108, 97, 114, 114, 59, 226, 134, 144, 115, 109, 97, 108, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 226, 136, 150, 115, 109, 97, 115, 104, 112, 59, 226, 168, 179, 115, 109, 101, 112, 97, 114, 115, 108, 59, 226, 167, 164, 115, 109, 105, 100, 59, 226, 136, 163, 115, 109, 105, 108, 101, 59, 226, 140, 163, 115, 109, 116, 59, 226, 170, 170, 115, 109, 116, 101, 59, 226, 170, 172, 115, 109, 116, 101, 115, 59, 226, 170, 172, 239, 184, 128, 115, 111, 102, 116, 99, 121, 59, 209, 140, 115, 111, 108, 59, 47, 115, 111, 108, 98, 59, 226, 167, 132, 115, 111, 108, 98, 97, 114, 59, 226, 140, 191, 115, 111, 112, 102, 59, 240, 157, 149, 164, 115, 112, 97, 100, 101, 115, 59, 226, 153, 160, 115, 112, 97, 100, 101, 115, 117, 105, 116, 59, 226, 153, 160, 115, 112, 97, 114, 59, 226, 136, 165, 115, 113, 99, 97, 112, 59, 226, 138, 147, 115, 113, 99, 97, 112, 115, 59, 226, 138, 147, 239, 184, 128, 115, 113, 99, 117, 112, 59, 226, 138, 148, 115, 113, 99, 117, 112, 115, 59, 226, 138, 148, 239, 184, 128, 115, 113, 115, 117, 98, 59, 226, 138, 143, 115, 113, 115, 117, 98, 101, 59, 226, 138, 145, 115, 113, 115, 117, 98, 115, 101, 116, 59, 226, 138, 143, 115, 113, 115, 117, 98, 115, 101, 116, 101, 113, 59, 226, 138, 145, 115, 113, 115, 117, 112, 59, 226, 138, 144, 115, 113, 115, 117, 112, 101, 59, 226, 138, 146, 115, 113, 115, 117, 112, 115, 101, 116, 59, 226, 138, 144, 115, 113, 115, 117, 112, 115, 101, 116, 101, 113, 59, 226, 138, 146, 115, 113, 117, 59, 226, 150, 161, 115, 113, 117, 97, 114, 101, 59, 226, 150, 161, 115, 113, 117, 97, 114, 102, 59, 226, 150, 170, 115, 113, 117, 102, 59, 226, 150, 170, 115, 114, 97, 114, 114, 59, 226, 134, 146, 115, 115, 99, 114, 59, 240, 157, 147, 136, 115, 115, 101, 116, 109, 110, 59, 226, 136, 150, 115, 115, 109, 105, 108, 101, 59, 226, 140, 163, 115, 115, 116, 97, 114, 102, 59, 226, 139, 134, 115, 116, 97, 114, 59, 226, 152, 134, 115, 116, 97, 114, 102, 59, 226, 152, 133, 115, 116, 114, 97, 105, 103, 104, 116, 101, 112, 115, 105, 108, 111, 110, 59, 207, 181, 115, 116, 114, 97, 105, 103, 104, 116, 112, 104, 105, 59, 207, 149, 115, 116, 114, 110, 115, 59, 194, 175, 115, 117, 98, 59, 226, 138, 130, 115, 117, 98, 69, 59, 226, 171, 133, 115, 117, 98, 100, 111, 116, 59, 226, 170, 189, 115, 117, 98, 101, 59, 226, 138, 134, 115, 117, 98, 101, 100, 111, 116, 59, 226, 171, 131, 115, 117, 98, 109, 117, 108, 116, 59, 226, 171, 129, 115, 117, 98, 110, 69, 59, 226, 171, 139, 115, 117, 98, 110, 101, 59, 226, 138, 138, 115, 117, 98, 112, 108, 117, 115, 59, 226, 170, 191, 115, 117, 98, 114, 97, 114, 114, 59, 226, 165, 185, 115, 117, 98, 115, 101, 116, 59, 226, 138, 130, 115, 117, 98, 115, 101, 116, 101, 113, 59, 226, 138, 134, 115, 117, 98, 115, 101, 116, 101, 113, 113, 59, 226, 171, 133, 115, 117, 98, 115, 101, 116, 110, 101, 113, 59, 226, 138, 138, 115, 117, 98, 115, 101, 116, 110, 101, 113, 113, 59, 226, 171, 139, 115, 117, 98, 115, 105, 109, 59, 226, 171, 135, 115, 117, 98, 115, 117, 98, 59, 226, 171, 149, 115, 117, 98, 115, 117, 112, 59, 226, 171, 147, 115, 117, 99, 99, 59, 226, 137, 187, 115, 117, 99, 99, 97, 112, 112, 114, 111, 120, 59, 226, 170, 184, 115, 117, 99, 99, 99, 117, 114, 108, 121, 101, 113, 59, 226, 137, 189, 115, 117, 99, 99, 101, 113, 59, 226, 170, 176, 115, 117, 99, 99, 110, 97, 112, 112, 114, 111, 120, 59, 226, 170, 186, 115, 117, 99, 99, 110, 101, 113, 113, 59, 226, 170, 182, 115, 117, 99, 99, 110, 115, 105, 109, 59, 226, 139, 169, 115, 117, 99, 99, 115, 105, 109, 59, 226, 137, 191, 115, 117, 109, 59, 226, 136, 145, 115, 117, 110, 103, 59, 226, 153, 170, 115, 117, 112, 49, 194, 185, 115, 117, 112, 49, 59, 194, 185, 115, 117, 112, 50, 194, 178, 115, 117, 112, 50, 59, 194, 178, 115, 117, 112, 51, 194, 179, 115, 117, 112, 51, 59, 194, 179, 115, 117, 112, 59, 226, 138, 131, 115, 117, 112, 69, 59, 226, 171, 134, 115, 117, 112, 100, 111, 116, 59, 226, 170, 190, 115, 117, 112, 100, 115, 117, 98, 59, 226, 171, 152, 115, 117, 112, 101, 59, 226, 138, 135, 115, 117, 112, 101, 100, 111, 116, 59, 226, 171, 132, 115, 117, 112, 104, 115, 111, 108, 59, 226, 159, 137, 115, 117, 112, 104, 115, 117, 98, 59, 226, 171, 151, 115, 117, 112, 108, 97, 114, 114, 59, 226, 165, 187, 115, 117, 112, 109, 117, 108, 116, 59, 226, 171, 130, 115, 117, 112, 110, 69, 59, 226, 171, 140, 115, 117, 112, 110, 101, 59, 226, 138, 139, 115, 117, 112, 112, 108, 117, 115, 59, 226, 171, 128, 115, 117, 112, 115, 101, 116, 59, 226, 138, 131, 115, 117, 112, 115, 101, 116, 101, 113, 59, 226, 138, 135, 115, 117, 112, 115, 101, 116, 101, 113, 113, 59, 226, 171, 134, 115, 117, 112, 115, 101, 116, 110, 101, 113, 59, 226, 138, 139, 115, 117, 112, 115, 101, 116, 110, 101, 113, 113, 59, 226, 171, 140, 115, 117, 112, 115, 105, 109, 59, 226, 171, 136, 115, 117, 112, 115, 117, 98, 59, 226, 171, 148, 115, 117, 112, 115, 117, 112, 59, 226, 171, 150, 115, 119, 65, 114, 114, 59, 226, 135, 153, 115, 119, 97, 114, 104, 107, 59, 226, 164, 166, 115, 119, 97, 114, 114, 59, 226, 134, 153, 115, 119, 97, 114, 114, 111, 119, 59, 226, 134, 153, 115, 119, 110, 119, 97, 114, 59, 226, 164, 170, 115, 122, 108, 105, 103, 195, 159, 115, 122, 108, 105, 103, 59, 195, 159, 116, 97, 114, 103, 101, 116, 59, 226, 140, 150, 116, 97, 117, 59, 207, 132, 116, 98, 114, 107, 59, 226, 142, 180, 116, 99, 97, 114, 111, 110, 59, 197, 165, 116, 99, 101, 100, 105, 108, 59, 197, 163, 116, 99, 121, 59, 209, 130, 116, 100, 111, 116, 59, 226, 131, 155, 116, 101, 108, 114, 101, 99, 59, 226, 140, 149, 116, 102, 114, 59, 240, 157, 148, 177, 116, 104, 101, 114, 101, 52, 59, 226, 136, 180, 116, 104, 101, 114, 101, 102, 111, 114, 101, 59, 226, 136, 180, 116, 104, 101, 116, 97, 59, 206, 184, 116, 104, 101, 116, 97, 115, 121, 109, 59, 207, 145, 116, 104, 101, 116, 97, 118, 59, 207, 145, 116, 104, 105, 99, 107, 97, 112, 112, 114, 111, 120, 59, 226, 137, 136, 116, 104, 105, 99, 107, 115, 105, 109, 59, 226, 136, 188, 116, 104, 105, 110, 115, 112, 59, 226, 128, 137, 116, 104, 107, 97, 112, 59, 226, 137, 136, 116, 104, 107, 115, 105, 109, 59, 226, 136, 188, 116, 104, 111, 114, 110, 195, 190, 116, 104, 111, 114, 110, 59, 195, 190, 116, 105, 108, 100, 101, 59, 203, 156, 116, 105, 109, 101, 115, 195, 151, 116, 105, 109, 101, 115, 59, 195, 151, 116, 105, 109, 101, 115, 98, 59, 226, 138, 160, 116, 105, 109, 101, 115, 98, 97, 114, 59, 226, 168, 177, 116, 105, 109, 101, 115, 100, 59, 226, 168, 176, 116, 105, 110, 116, 59, 226, 136, 173, 116, 111, 101, 97, 59, 226, 164, 168, 116, 111, 112, 59, 226, 138, 164, 116, 111, 112, 98, 111, 116, 59, 226, 140, 182, 116, 111, 112, 99, 105, 114, 59, 226, 171, 177, 116, 111, 112, 102, 59, 240, 157, 149, 165, 116, 111, 112, 102, 111, 114, 107, 59, 226, 171, 154, 116, 111, 115, 97, 59, 226, 164, 169, 116, 112, 114, 105, 109, 101, 59, 226, 128, 180, 116, 114, 97, 100, 101, 59, 226, 132, 162, 116, 114, 105, 97, 110, 103, 108, 101, 59, 226, 150, 181, 116, 114, 105, 97, 110, 103, 108, 101, 100, 111, 119, 110, 59, 226, 150, 191, 116, 114, 105, 97, 110, 103, 108, 101, 108, 101, 102, 116, 59, 226, 151, 131, 116, 114, 105, 97, 110, 103, 108, 101, 108, 101, 102, 116, 101, 113, 59, 226, 138, 180, 116, 114, 105, 97, 110, 103, 108, 101, 113, 59, 226, 137, 156, 116, 114, 105, 97, 110, 103, 108, 101, 114, 105, 103, 104, 116, 59, 226, 150, 185, 116, 114, 105, 97, 110, 103, 108, 101, 114, 105, 103, 104, 116, 101, 113, 59, 226, 138, 181, 116, 114, 105, 100, 111, 116, 59, 226, 151, 172, 116, 114, 105, 101, 59, 226, 137, 156, 116, 114, 105, 109, 105, 110, 117, 115, 59, 226, 168, 186, 116, 114, 105, 112, 108, 117, 115, 59, 226, 168, 185, 116, 114, 105, 115, 98, 59, 226, 167, 141, 116, 114, 105, 116, 105, 109, 101, 59, 226, 168, 187, 116, 114, 112, 101, 122, 105, 117, 109, 59, 226, 143, 162, 116, 115, 99, 114, 59, 240, 157, 147, 137, 116, 115, 99, 121, 59, 209, 134, 116, 115, 104, 99, 121, 59, 209, 155, 116, 115, 116, 114, 111, 107, 59, 197, 167, 116, 119, 105, 120, 116, 59, 226, 137, 172, 116, 119, 111, 104, 101, 97, 100, 108, 101, 102, 116, 97, 114, 114, 111, 119, 59, 226, 134, 158, 116, 119, 111, 104, 101, 97, 100, 114, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 226, 134, 160, 117, 65, 114, 114, 59, 226, 135, 145, 117, 72, 97, 114, 59, 226, 165, 163, 117, 97, 99, 117, 116, 101, 195, 186, 117, 97, 99, 117, 116, 101, 59, 195, 186, 117, 97, 114, 114, 59, 226, 134, 145, 117, 98, 114, 99, 121, 59, 209, 158, 117, 98, 114, 101, 118, 101, 59, 197, 173, 117, 99, 105, 114, 99, 195, 187, 117, 99, 105, 114, 99, 59, 195, 187, 117, 99, 121, 59, 209, 131, 117, 100, 97, 114, 114, 59, 226, 135, 133, 117, 100, 98, 108, 97, 99, 59, 197, 177, 117, 100, 104, 97, 114, 59, 226, 165, 174, 117, 102, 105, 115, 104, 116, 59, 226, 165, 190, 117, 102, 114, 59, 240, 157, 148, 178, 117, 103, 114, 97, 118, 101, 195, 185, 117, 103, 114, 97, 118, 101, 59, 195, 185, 117, 104, 97, 114, 108, 59, 226, 134, 191, 117, 104, 97, 114, 114, 59, 226, 134, 190, 117, 104, 98, 108, 107, 59, 226, 150, 128, 117, 108, 99, 111, 114, 110, 59, 226, 140, 156, 117, 108, 99, 111, 114, 110, 101, 114, 59, 226, 140, 156, 117, 108, 99, 114, 111, 112, 59, 226, 140, 143, 117, 108, 116, 114, 105, 59, 226, 151, 184, 117, 109, 97, 99, 114, 59, 197, 171, 117, 109, 108, 194, 168, 117, 109, 108, 59, 194, 168, 117, 111, 103, 111, 110, 59, 197, 179, 117, 111, 112, 102, 59, 240, 157, 149, 166, 117, 112, 97, 114, 114, 111, 119, 59, 226, 134, 145, 117, 112, 100, 111, 119, 110, 97, 114, 114, 111, 119, 59, 226, 134, 149, 117, 112, 104, 97, 114, 112, 111, 111, 110, 108, 101, 102, 116, 59, 226, 134, 191, 117, 112, 104, 97, 114, 112, 111, 111, 110, 114, 105, 103, 104, 116, 59, 226, 134, 190, 117, 112, 108, 117, 115, 59, 226, 138, 142, 117, 112, 115, 105, 59, 207, 133, 117, 112, 115, 105, 104, 59, 207, 146, 117, 112, 115, 105, 108, 111, 110, 59, 207, 133, 117, 112, 117, 112, 97, 114, 114, 111, 119, 115, 59, 226, 135, 136, 117, 114, 99, 111, 114, 110, 59, 226, 140, 157, 117, 114, 99, 111, 114, 110, 101, 114, 59, 226, 140, 157, 117, 114, 99, 114, 111, 112, 59, 226, 140, 142, 117, 114, 105, 110, 103, 59, 197, 175, 117, 114, 116, 114, 105, 59, 226, 151, 185, 117, 115, 99, 114, 59, 240, 157, 147, 138, 117, 116, 100, 111, 116, 59, 226, 139, 176, 117, 116, 105, 108, 100, 101, 59, 197, 169, 117, 116, 114, 105, 59, 226, 150, 181, 117, 116, 114, 105, 102, 59, 226, 150, 180, 117, 117, 97, 114, 114, 59, 226, 135, 136, 117, 117, 109, 108, 195, 188, 117, 117, 109, 108, 59, 195, 188, 117, 119, 97, 110, 103, 108, 101, 59, 226, 166, 167, 118, 65, 114, 114, 59, 226, 135, 149, 118, 66, 97, 114, 59, 226, 171, 168, 118, 66, 97, 114, 118, 59, 226, 171, 169, 118, 68, 97, 115, 104, 59, 226, 138, 168, 118, 97, 110, 103, 114, 116, 59, 226, 166, 156, 118, 97, 114, 101, 112, 115, 105, 108, 111, 110, 59, 207, 181, 118, 97, 114, 107, 97, 112, 112, 97, 59, 207, 176, 118, 97, 114, 110, 111, 116, 104, 105, 110, 103, 59, 226, 136, 133, 118, 97, 114, 112, 104, 105, 59, 207, 149, 118, 97, 114, 112, 105, 59, 207, 150, 118, 97, 114, 112, 114, 111, 112, 116, 111, 59, 226, 136, 157, 118, 97, 114, 114, 59, 226, 134, 149, 118, 97, 114, 114, 104, 111, 59, 207, 177, 118, 97, 114, 115, 105, 103, 109, 97, 59, 207, 130, 118, 97, 114, 115, 117, 98, 115, 101, 116, 110, 101, 113, 59, 226, 138, 138, 239, 184, 128, 118, 97, 114, 115, 117, 98, 115, 101, 116, 110, 101, 113, 113, 59, 226, 171, 139, 239, 184, 128, 118, 97, 114, 115, 117, 112, 115, 101, 116, 110, 101, 113, 59, 226, 138, 139, 239, 184, 128, 118, 97, 114, 115, 117, 112, 115, 101, 116, 110, 101, 113, 113, 59, 226, 171, 140, 239, 184, 128, 118, 97, 114, 116, 104, 101, 116, 97, 59, 207, 145, 118, 97, 114, 116, 114, 105, 97, 110, 103, 108, 101, 108, 101, 102, 116, 59, 226, 138, 178, 118, 97, 114, 116, 114, 105, 97, 110, 103, 108, 101, 114, 105, 103, 104, 116, 59, 226, 138, 179, 118, 99, 121, 59, 208, 178, 118, 100, 97, 115, 104, 59, 226, 138, 162, 118, 101, 101, 59, 226, 136, 168, 118, 101, 101, 98, 97, 114, 59, 226, 138, 187, 118, 101, 101, 101, 113, 59, 226, 137, 154, 118, 101, 108, 108, 105, 112, 59, 226, 139, 174, 118, 101, 114, 98, 97, 114, 59, 124, 118, 101, 114, 116, 59, 124, 118, 102, 114, 59, 240, 157, 148, 179, 118, 108, 116, 114, 105, 59, 226, 138, 178, 118, 110, 115, 117, 98, 59, 226, 138, 130, 226, 131, 146, 118, 110, 115, 117, 112, 59, 226, 138, 131, 226, 131, 146, 118, 111, 112, 102, 59, 240, 157, 149, 167, 118, 112, 114, 111, 112, 59, 226, 136, 157, 118, 114, 116, 114, 105, 59, 226, 138, 179, 118, 115, 99, 114, 59, 240, 157, 147, 139, 118, 115, 117, 98, 110, 69, 59, 226, 171, 139, 239, 184, 128, 118, 115, 117, 98, 110, 101, 59, 226, 138, 138, 239, 184, 128, 118, 115, 117, 112, 110, 69, 59, 226, 171, 140, 239, 184, 128, 118, 115, 117, 112, 110, 101, 59, 226, 138, 139, 239, 184, 128, 118, 122, 105, 103, 122, 97, 103, 59, 226, 166, 154, 119, 99, 105, 114, 99, 59, 197, 181, 119, 101, 100, 98, 97, 114, 59, 226, 169, 159, 119, 101, 100, 103, 101, 59, 226, 136, 167, 119, 101, 100, 103, 101, 113, 59, 226, 137, 153, 119, 101, 105, 101, 114, 112, 59, 226, 132, 152, 119, 102, 114, 59, 240, 157, 148, 180, 119, 111, 112, 102, 59, 240, 157, 149, 168, 119, 112, 59, 226, 132, 152, 119, 114, 59, 226, 137, 128, 119, 114, 101, 97, 116, 104, 59, 226, 137, 128, 119, 115, 99, 114, 59, 240, 157, 147, 140, 120, 99, 97, 112, 59, 226, 139, 130, 120, 99, 105, 114, 99, 59, 226, 151, 175, 120, 99, 117, 112, 59, 226, 139, 131, 120, 100, 116, 114, 105, 59, 226, 150, 189, 120, 102, 114, 59, 240, 157, 148, 181, 120, 104, 65, 114, 114, 59, 226, 159, 186, 120, 104, 97, 114, 114, 59, 226, 159, 183, 120, 105, 59, 206, 190, 120, 108, 65, 114, 114, 59, 226, 159, 184, 120, 108, 97, 114, 114, 59, 226, 159, 181, 120, 109, 97, 112, 59, 226, 159, 188, 120, 110, 105, 115, 59, 226, 139, 187, 120, 111, 100, 111, 116, 59, 226, 168, 128, 120, 111, 112, 102, 59, 240, 157, 149, 169, 120, 111, 112, 108, 117, 115, 59, 226, 168, 129, 120, 111, 116, 105, 109, 101, 59, 226, 168, 130, 120, 114, 65, 114, 114, 59, 226, 159, 185, 120, 114, 97, 114, 114, 59, 226, 159, 182, 120, 115, 99, 114, 59, 240, 157, 147, 141, 120, 115, 113, 99, 117, 112, 59, 226, 168, 134, 120, 117, 112, 108, 117, 115, 59, 226, 168, 132, 120, 117, 116, 114, 105, 59, 226, 150, 179, 120, 118, 101, 101, 59, 226, 139, 129, 120, 119, 101, 100, 103, 101, 59, 226, 139, 128, 121, 97, 99, 117, 116, 101, 195, 189, 121, 97, 99, 117, 116, 101, 59, 195, 189, 121, 97, 99, 121, 59, 209, 143, 121, 99, 105, 114, 99, 59, 197, 183, 121, 99, 121, 59, 209, 139, 121, 101, 110, 194, 165, 121, 101, 110, 59, 194, 165, 121, 102, 114, 59, 240, 157, 148, 182, 121, 105, 99, 121, 59, 209, 151, 121, 111, 112, 102, 59, 240, 157, 149, 170, 121, 115, 99, 114, 59, 240, 157, 147, 142, 121, 117, 99, 121, 59, 209, 142, 121, 117, 109, 108, 195, 191, 121, 117, 109, 108, 59, 195, 191, 122, 97, 99, 117, 116, 101, 59, 197, 186, 122, 99, 97, 114, 111, 110, 59, 197, 190, 122, 99, 121, 59, 208, 183, 122, 100, 111, 116, 59, 197, 188, 122, 101, 101, 116, 114, 102, 59, 226, 132, 168, 122, 101, 116, 97, 59, 206, 182, 122, 102, 114, 59, 240, 157, 148, 183, 122, 104, 99, 121, 59, 208, 182, 122, 105, 103, 114, 97, 114, 114, 59, 226, 135, 157, 122, 111, 112, 102, 59, 240, 157, 149, 171, 122, 115, 99, 114, 59, 240, 157, 147, 143, 122, 119, 106, 59, 226, 128, 141, 122, 119, 110, 106, 59, 226, 128, 140, }; #define TABLE_ENTRIES 2231 static const uint32_t table_entries[TABLE_ENTRIES] = { 68, 1861, 3874, 4899, 6213, 8262, 10566, 12868, 14661, 16707, 18307, 20293, 22342, 24645, 26693, 28771, 30533, 32644, 34925, 39236, 41029, 43140, 45414, 47941, 49990, 52291, 53828, 55657, 58980, 61030, 63555, 65127, 67946, 71492, 73347, 75396, 77637, 79716, 81766, 84292, 86083, 87620, 89414, 91747, 93556, 99687, 102470, 104773, 106822, 109125, 111207, 113988, 115783, 118345, 121443, 123203, 124777, 128107, 131946, 135531, 139384, 146549, 152943, 157797, 160102, 162665, 165990, 168559, 173412, 175465, 178815, 187749, 190084, 192355, 194150, 196706, 198248, 201284, 203076, 204868, 206694, 209252, 211301, 213574, 215875, 217443, 219205, 221315, 223312, 228174, 232534, 238896, 243536, 248423, 251245, 255620, 257859, 259430, 261992, 265077, 271433, 274543, 279407, 284276, 290413, 294771, 300664, 307828, 313968, 319086, 323693, 328049, 333425, 338793, 342124, 346224, 351305, 354419, 360305, 365678, 370289, 375666, 381295, 386162, 391783, 394604, 398697, 402052, 404294, 406595, 408130, 409411, 410949, 412998, 415302, 417604, 419397, 421443, 422980, 424835, 426821, 428870, 431207, 433989, 436080, 441204, 447301, 449412, 451655, 454245, 456554, 460139, 463972, 466020, 468035, 469571, 471108, 472934, 475500, 479555, 481155, 483185, 488565, 494980, 497254, 499818, 503396, 505412, 507169, 507938, 508997, 511046, 513350, 515654, 517957, 520003, 521540, 523395, 525410, 526980, 529260, 533360, 538480, 543598, 548203, 552049, 557420, 561540, 563810, 565318, 567621, 569635, 570949, 573027, 574828, 578916, 580974, 585572, 587590, 589932, 594025, 597316, 599109, 601156, 602949, 604998, 607300, 609093, 611139, 612676, 614499, 616261, 618310, 620642, 622149, 624234, 627815, 630627, 632424, 635500, 639598, 644206, 648773, 650884, 653124, 654948, 656966, 659269, 661315, 662852, 664645, 666691, 668291, 670340, 672644, 674886, 677189, 679236, 681028, 682821, 684870, 687171, 688771, 690820, 693124, 695364, 697121, 697890, 698950, 701254, 703588, 705642, 709220, 711238, 713542, 715843, 717424, 722537, 725868, 729971, 735851, 739697, 745073, 750446, 755057, 760425, 763758, 768367, 773223, 776044, 780141, 784492, 788591, 793457, 798832, 803951, 808812, 812911, 817770, 821357, 825705, 829038, 833648, 838765, 843115, 846952, 850030, 854633, 857987, 860002, 861546, 865094, 867437, 871794, 877422, 882029, 886386, 892014, 896644, 898926, 903535, 908388, 910435, 912198, 914530, 916067, 917827, 919403, 923241, 926595, 928617, 931972, 934244, 936258, 937540, 939334, 941638, 943942, 946243, 947827, 953714, 959345, 964725, 971124, 977262, 981799, 984195, 986215, 989008, 993892, 995939, 997740, 1001833, 1005172, 1011306, 1014888, 1018029, 1022825, 1026154, 1029743, 1034675, 1041073, 1046894, 1051572, 1058159, 1063087, 1068460, 1073007, 1077938, 1084020, 1090151, 1092972, 1097070, 1101739, 1106097, 1111916, 1116087, 1123505, 1129323, 1133232, 1138805, 1145201, 1150576, 1155763, 1162101, 1168559, 1173876, 1180081, 1185910, 1192649, 1196654, 1201259, 1205168, 1210741, 1217200, 1222859, 1227376, 1232488, 1235565, 1239921, 1245293, 1249646, 1254276, 1256517, 1258566, 1260866, 1262149, 1264197, 1266246, 1268548, 1270341, 1272387, 1273926, 1276291, 1278277, 1280326, 1282629, 1284677, 1286727, 1289348, 1291636, 1297774, 1302370, 1303940, 1306181, 1308230, 1310533, 1312582, 1314918, 1317443, 1318980, 1320807, 1323625, 1326955, 1330799, 1335656, 1338691, 1340291, 1342275, 1343810, 1345097, 1348205, 1352548, 1354594, 1356136, 1359213, 1363570, 1369197, 1373541, 1375847, 1378666, 1382252, 1386372, 1388611, 1390115, 1391396, 1393027, 1395044, 1397124, 1399397, 1401666, 1402947, 1404486, 1406820, 1408868, 1410918, 1413446, 1415750, 1418051, 1419618, 1421166, 1425778, 1431412, 1437539, 1439299, 1440881, 1446250, 1449837, 1454195, 1460076, 1464178, 1469810, 1475439, 1480306, 1485930, 1489512, 1492589, 1496942, 1501549, 1505904, 1511026, 1516657, 1522032, 1527149, 1531504, 1536619, 1540462, 1545066, 1548644, 1550700, 1554795, 1558628, 1560675, 1562475, 1566278, 1568580, 1570374, 1572678, 1575010, 1576518, 1578822, 1581125, 1583171, 1584771, 1586798, 1591406, 1596015, 1600876, 1604933, 1607019, 1610884, 1613156, 1615206, 1617778, 1623404, 1627505, 1632878, 1637491, 1643371, 1647236, 1649508, 1651555, 1653350, 1655915, 1659752, 1662829, 1667186, 1672813, 1677160, 1680227, 1682019, 1683816, 1686893, 1691238, 1693764, 1695557, 1697637, 1699909, 1701956, 1703715, 1705027, 1706566, 1708870, 1711171, 1712771, 1714793, 1718085, 1720266, 1724521, 1727845, 1730154, 1733742, 1738346, 1741956, 1744233, 1747588, 1749830, 1752133, 1754182, 1756516, 1758568, 1761605, 1763654, 1765956, 1767749, 1769795, 1771334, 1773699, 1775685, 1777734, 1780037, 1782056, 1784682, 1788268, 1792368, 1797477, 1799785, 1803077, 1805188, 1807463, 1810282, 1813872, 1818987, 1822829, 1827173, 1829482, 1833063, 1835883, 1839726, 1844335, 1849156, 1850951, 1853509, 1855620, 1857862, 1860163, 1861700, 1863525, 1865828, 1867843, 1869413, 1871718, 1874275, 1876070, 1878628, 1880683, 1884460, 1888113, 1893485, 1897837, 1902211, 1904260, 1906564, 1908838, 1911365, 1913445, 1915779, 1917828, 1920132, 1922435, 1924418, 1925764, 1928068, 1930308, 1932100, 1933892, 1935685, 1937734, 1940037, 1942083, 1943683, 1945732, 1948036, 1950276, 1952068, 1953862, 1956166, 1958467, 1960004, 1961838, 1966404, 1968227, 1970020, 1972100, 1974341, 1976390, 1978694, 1981026, 1982627, 1984867, 1986628, 1988421, 1990468, 1992261, 1994307, 1995844, 1997637, 1999714, 2001283, 2003269, 2005318, 2007655, 2010469, 2012741, 2014789, 2016869, 2019106, 2020131, 2021475, 2023270, 2025828, 2027880, 2030948, 2032995, 2034788, 2036837, 2039142, 2041704, 2044776, 2047848, 2050920, 2053992, 2057064, 2060136, 2063208, 2066277, 2068583, 2071400, 2074470, 2076997, 2079079, 2081861, 2083972, 2086242, 2087779, 2089574, 2092131, 2093924, 2095908, 2097510, 2100072, 2103108, 2104901, 2107012, 2109219, 2110565, 2112871, 2115653, 2117702, 2120003, 2121540, 2123368, 2126437, 2128740, 2130792, 2133835, 2137449, 2140775, 2143593, 2146918, 2149478, 2152040, 2155108, 2157160, 2160229, 2162499, 2164069, 2166374, 2168935, 2171751, 2174533, 2176614, 2179140, 2180964, 2183015, 2185859, 2187878, 2190439, 2193254, 2195815, 2198632, 2201705, 2205032, 2208103, 2210927, 2215789, 2220136, 2223206, 2225768, 2228838, 2231404, 2235499, 2239341, 2243697, 2249073, 2254450, 2260069, 2262373, 2264677, 2266981, 2269285, 2271619, 2273735, 2277220, 2279300, 2281571, 2283366, 2285926, 2288485, 2290789, 2293093, 2295397, 2297700, 2299749, 2302053, 2304357, 2306661, 2308965, 2311269, 2313573, 2315877, 2318180, 2320229, 2322533, 2324837, 2327141, 2329445, 2331749, 2334054, 2336613, 2338917, 2341221, 2343525, 2345828, 2347877, 2350181, 2352485, 2354789, 2357096, 2360167, 2362984, 2366053, 2368357, 2370661, 2372965, 2375268, 2377317, 2379621, 2381925, 2384229, 2386533, 2388837, 2391142, 2393669, 2395717, 2397766, 2400132, 2402405, 2404708, 2406757, 2408996, 2410597, 2412904, 2415972, 2418022, 2420580, 2422629, 2424933, 2427238, 2429766, 2432099, 2433894, 2436456, 2439526, 2442086, 2444646, 2447300, 2450021, 2452293, 2454373, 2456646, 2458949, 2460998, 2463301, 2465381, 2467687, 2470468, 2472260, 2474053, 2476135, 2478915, 2480452, 2482249, 2485379, 2487364, 2489189, 2491497, 2494787, 2496355, 2498148, 2500164, 2501990, 2504559, 2509424, 2514504, 2517352, 2520426, 2524011, 2527851, 2531684, 2533736, 2536806, 2539367, 2542181, 2544488, 2547493, 2549350, 2551911, 2554661, 2556454, 2558564, 2560614, 2563178, 2566761, 2570084, 2572135, 2574950, 2577540, 2579814, 2582339, 2583876, 2585702, 2588261, 2590565, 2592900, 2595172, 2597221, 2599524, 2601573, 2603877, 2606183, 2608999, 2611813, 2614117, 2616422, 2618983, 2621795, 2623592, 2626662, 2629222, 2631782, 2634341, 2636740, 2639462, 2642023, 2644843, 2648683, 2652520, 2655594, 2659141, 2661190, 2663534, 2668143, 2672997, 2675301, 2677608, 2680677, 2682982, 2685540, 2687588, 2689638, 2692198, 2694756, 2696804, 2698853, 2701159, 2703941, 2705990, 2708291, 2709858, 2711399, 2714213, 2716519, 2719298, 2720579, 2722117, 2724199, 2727014, 2729603, 2731621, 2733925, 2736228, 2738279, 2741099, 2744933, 2747203, 2748743, 2751333, 2753603, 2755141, 2757190, 2759533, 2763878, 2766404, 2768230, 2770790, 2773286, 2775428, 2777667, 2779237, 2781544, 2784616, 2787687, 2790505, 2793838, 2798441, 2801774, 2806383, 2811248, 2816360, 2819430, 2821990, 2824580, 2826820, 2828644, 2830662, 2832997, 2835300, 2837349, 2839653, 2841957, 2844263, 2847044, 2848872, 2851941, 2854244, 2856261, 2858310, 2860646, 2863174, 2865508, 2867524, 2869317, 2871398, 2873923, 2875460, 2877282, 2878821, 2881155, 2883170, 2884677, 2886726, 2889059, 2890854, 2893410, 2894952, 2898019, 2899811, 2901606, 2904133, 2906213, 2908520, 2911590, 2914150, 2916710, 2919268, 2921283, 2922852, 2924869, 2926980, 2929252, 2931302, 2933861, 2936132, 2937927, 2940485, 2942566, 2945127, 2947941, 2950250, 2953835, 2957606, 2959718, 2962277, 2964583, 2967400, 2970469, 2972773, 2975076, 2977125, 2979428, 2981443, 2982978, 2984259, 2985795, 2987332, 2989156, 2991140, 2992741, 2995051, 2998892, 3002989, 3007299, 3008870, 3011430, 3013989, 3016294, 3018883, 3020901, 3023173, 3025252, 3027301, 3029605, 3031876, 3033732, 3036006, 3038564, 3040613, 3042920, 3045957, 3048006, 3050342, 3052869, 3054918, 3057254, 3059814, 3062374, 3064934, 3067494, 3070021, 3072070, 3074406, 3076966, 3079526, 3082086, 3084646, 3087206, 3089765, 3092069, 3094404, 3096674, 3098211, 3099974, 3102277, 3104326, 3106659, 3108422, 3110725, 3112771, 3114308, 3116130, 3117667, 3119459, 3121252, 3123304, 3126371, 3128165, 3130470, 3133031, 3135848, 3139012, 3141734, 3144323, 3146338, 3147875, 3149669, 3151940, 3153762, 3155299, 3157091, 3158883, 3160675, 3162468, 3164520, 3167587, 3169380, 3171429, 3173733, 3176068, 3178277, 3180132, 3182180, 3184229, 3186533, 3188769, 3189538, 3190628, 3192677, 3194981, 3197286, 3199847, 3202665, 3205990, 3208550, 3211113, 3214442, 3218023, 3220838, 3223497, 3227588, 3230308, 3232358, 3234884, 3236710, 3239238, 3241572, 3243623, 3246437, 3248740, 3250757, 3252838, 3255401, 3258726, 3261286, 3263875, 3265896, 3268968, 3272037, 3274342, 3276909, 3281262, 3285892, 3288166, 3290756, 3293030, 3295558, 3297894, 3300454, 3302981, 3305030, 3307362, 3308868, 3310661, 3312707, 3314244, 3316036, 3317829, 3319907, 3321731, 3323717, 3325766, 3328098, 3329638, 3332197, 3334502, 3337061, 3339333, 3341381, 3343461, 3345768, 3348840, 3351877, 3353956, 3355973, 3358050, 3359590, 3362149, 3364456, 3367494, 3369827, 3371622, 3374184, 3377256, 3380328, 3383399, 3386180, 3387973, 3390084, 3392324, 3394149, 3396421, 3398470, 3400836, 3403108, 3405157, 3407463, 3410277, 3412582, 3415141, 3417442, 3418950, 3421253, 3423299, 3424836, 3426629, 3428675, 3430275, 3432261, 3434372, 3436676, 3438918, 3441221, 3443269, 3445318, 3447622, 3449923, 3451523, 3453510, 3455812, 3457604, 3459460, 3461764, 3464037, 3466340, 3468390, 3470949, 3473250, 3474787, 3476580, 3478598, 3480936, 3484006, 3486534, 3488868, 3490917, 3493222, 3495779, 3497540, 3499333, 3501412, 3503461, 3505767, 3508582, 3511142, 3513702, 3516262, 3518823, 3521638, 3524195, 3525990, 3528548, 3530693, 3533669, 3535973, 3538214, 3540262, 3542373, 3544679, 3547495, 3550278, 3552582, 3554917, 3557156, 3558723, 3560292, 3562341, 3564646, 3567207, 3570024, 3573092, 3575138, 3576681, 3580013, 3584367, 3589229, 3593582, 3598190, 3602799, 3607665, 3613043, 3618926, 3623523, 3625315, 3627108, 3629160, 3632227, 3634021, 3636326, 3638887, 3641704, 3644868, 3647590, 3650154, 3653735, 3656553, 3659882, 3663463, 3666279, 3669094, 3671654, 3674243, 3676258, 3677795, 3679589, 3681893, 3684198, 3686757, 3689028, 3690850, 3692389, 3694696, 3697766, 3700325, 3702598, 3704934, 3707498, 3711075, 3712868, 3714920, 3717987, 3719780, 3721829, 3724133, 3726437, 3728741, 3731045, 3733357, 3737714, 3743338, 3746926, 3751533, 3755886, 3760485, 3762820, 3765094, 3767655, 3770470, 3772966, 3775075, 3776871, 3779684, 3781668, 3783270, 3785829, 3788136, 3791205, 3793510, 3796067, 3797861, 3800166, 3802756, 3805027, 3806820, 3808869, 3811173, 3813412, 3815013, 3817318, 3819846, 3822113, 3822882, 3823972, 3826021, 3828325, 3830630, 3833190, 3835750, 3838311, 3841126, 3843684, 3845733, 3848037, 3850344, 3853415, 3856329, 3860420, 3863141, 3865411, 3866948, 3868772, 3870820, 3872871, 3875683, 3877478, 3880042, 3883626, 3887208, 3890278, 3892838, 3895363, 3896933, 3899245, 3903619, 3905635, 3907396, 3909189, 3911267, 3912998, 3915110, 3917637, 3919686, 3922021, 3924326, 3926886, 3929447, 3932260, 3934308, 3936358, 3938918, 3941508, 3943778, 3945348, 3947622, 3950146, 3951464, 3954533, 3956899, 3959235, 3961764, 3964266, 3967855, 3972771, 3975107, 3977636, 3980139, 3983974, 3986534, 3989093, 3991366, 3993796, 3996515, 3998372, 4000933, 4003653, 4005735, 4008549, 4010855, 4013672, 4016707, 4018244, 4020133, 4022950, 4025956, 4027974, 4030278, 4032613, 4034984, 4038500, 4040515, 4042085, 4044386, 4045925, 4048230, 4050789, 4053095, 4055973, 4058726, 4061286, 4063909, 4066662, 4069223, 4072067, 4074147, 4076387, 4078180, 4080293, 4083113, 4086948, 4089445, 4091747, 4093540, 4095589, 4097893, 4100197, 4102498, 4104035, 4105828, 4107875, 4109636, 4111461, 4113827, 4116069, 4118372, 4120419, 4122218, 4125807, 4130660, 4132773, 4135593, 4139428, 4141925, 4144229, 4146531, 4148325, 4150630, 4153188, 4155268, 4157506, 4158787, 4160357, 4162726, 4165800, 4169319, 4172135, 4174951, 4177765, 4180071, 4182887, 4185703, 4188516, 4190569, 4193990, 4197285, 4200039, 4202851, 4204646, 4207268, 4209765, 4212135, 4215397, 4217701, 4220070, 4223142, 4226155, 4229989, 4232294, 4234851, 4236646, 4239268, 4241796, 4244073, 4247406, 4252004, 4254053, 4256358, 4258917, 4261221, 4263527, 4266343, 4269156, 4271269, 4274021, 4276423, 4279913, 4283306, 4287333, 4289703, 4292964, 4295077, 4297829, 4300231, 4303721, 4307114, 4311140, 4313157, 4315206, 4317540, 4319597, 4323951, 4328814, 4333424, 4338498, 4339747, 4341094, 4343653, 4345958, 4348518, 4351172, 4353894, 4356548, 4359300, 4361575, 4364390, 4367044, 4369796, 4372167, 4375654, 4378311, 4381893, 4384869, 4387174, 4389733, 4392039, 4394854, 4397410, 4398917, 4400966, 4403300, 4405348, 4407364, 4409157, 4411203, 4412773, 4415046, 4417380, 4419428, 4421478, 4424005, 4426085, 4428419, 4430404, 4432197, 4434246, 4436579, 4438373, 4440643, 4442212, 4444261, 4446565, 4448871, 4451685, 4453987, 4455749, 4457797, 4459847, 4462436, 4464486, 4467076, 4469348, 4471397, 4473701, 4476002, 4477541, 4479843, 4481637, 4483943, 4486723, 4488260, 4490051, 4491588, 4493414, 4495972, 4498023, 4500835, 4502628, 4504645, 4506694, 4509028, 4511045, 4513094, 4515430, 4517992, 4521027, 4522564, 4524389, 4526691, 4528451, 4529988, 4531816, 4534886, 4537445, 4539748, 4541763, 4543270, 4545318, 4547430, 4549988, 4552039, 4554883, 4556867, 4558404, 4560230, 4562789, 4565058, 4566377, 4569667, 4571238, 4573799, 4576614, 4579108, 4580712, 4583781, 4586087, 4588902, 4591462, 4594021, 4596293, 4598342, 4600679, 4603495, 4606274, 4607592, 4610692, 4612932, 4614725, 4616802, 4618339, 4620132, 4622181, 4624483, 4626276, 4628330, 4631915, 4635750, 4638315, 4642152, 4645224, 4648295, 4651109, 4653414, 4655972, 4658021, 4660326, 4662884, 4664936, 4668008, 4671080, 4674148, 4676198, 4678757, 4681062, 4683652, 4685891, 4687462, 4690051, 4692068, 4694148, 4696422, 4699012, 4701291, 4705127, 4707877, 4709735, 4712483, 4713764, 4715365, 4717668, 4719718, 4722277, 4724580, 4726692, 4729158, 4731493, 4733800, 4736868, 4738917, 4741221, 4743526, 4746052, 4747845, 4749924, 4751974, 4754533, 4756839, 4759653, 4761958, 4764518, 4767078, 4769638, 4772199, 4775014, 4777573, 4779878, 4782437, 4784745, 4788069, 4790373, 4792614, 4794662, 4796773, 4799079, 4801895, 4804678, 4806982, 4809317, 4811556, 4813123, 4814692, 4816743, 4819557, 4821862, 4824420, 4826468, 4828519, 4831336, 4834405, 4836708, 4838722, 4840003, 4841574, 4844134, 4846723, 4848741, 4851045, 4853350, 4855875, 4857412, 4859242, 4862830, 4867440, 4872558, 4877167, 4882033, 4887408, 4892527, 4897391, 4902212, 4904044, 4908133, 4910437, 4912739, 4914534, 4917098, 4920677, 4922981, 4925285, 4927589, 4929893, 4932228, 4934502, 4937063, 4939812, 4941414, 4943976, 4947045, 4949350, 4951940, 4954211, 4955940, 4957541, 4959846, 4962406, 4964966, 4967524, 4969573, 4971877, 4974184, 4977255, 4980066, 4981574, 4983909, 4986210, 4987747, 4989540, 4991558, 4993893, 4996195, 4997958, 5000261, 5002340, 5004389, 5006694, 5009256, 5012325, 5014595, 5016164, 5018213, 5020517, 5022821, 5025126, 5027685, 5029991, 5032771, 5034308, 5036068, 5037670, 5040232, 5043301, 5045604, 5047683, 5049702, 5052261, 5054534, 5056836, 5058664, 5061741, 5066050, 5067331, 5068869, 5070918, 5073222, 5075555, 5077350, 5079908, 5081957, 5084260, 5086309, 5088612, 5090661, 5092965, 5095271, 5098087, 5100901, 5103213, 5107558, 5110120, 5113188, 5115237, 5117539, 5119332, 5121477, 5124422, 5126691, 5128036, 5130086, 5132676, 5134950, 5137513, 5140836, 5142885, 5145286, 5148517, 5150918, 5154149, 5156454, 5159016, 5162090, 5165669, 5167974, 5170536, 5173610, 5177187, 5178982, 5181542, 5184100, 5186149, 5188484, 5190758, 5193318, 5195878, 5198436, 5200485, 5202767, 5207371, 5210949, 5213027, 5214820, 5216870, 5219428, 5221479, 5224295, 5227109, 5229413, 5231719, 5234535, 5237350, 5239912, 5242985, 5246313, 5249642, 5253222, 5255782, 5258342, 5260900, 5262954, 5266539, 5270374, 5272939, 5276776, 5279848, 5282919, 5285731, 5287524, 5289539, 5291076, 5292867, 5294404, 5296195, 5297732, 5299555, 5301348, 5303398, 5305959, 5308772, 5310823, 5313639, 5316455, 5319271, 5322087, 5324901, 5327205, 5329511, 5332326, 5334888, 5337961, 5341289, 5344618, 5348198, 5350758, 5353318, 5355877, 5358182, 5360741, 5363047, 5365862, 5368388, 5370181, 5372262, 5374787, 5376356, 5378374, 5380678, 5382979, 5384548, 5386598, 5389187, 5391206, 5393769, 5397061, 5399112, 5401926, 5404267, 5408104, 5411174, 5413733, 5416038, 5418564, 5420357, 5422405, 5424452, 5426245, 5428326, 5430888, 5433958, 5436516, 5438564, 5440611, 5442406, 5444966, 5447556, 5449831, 5452644, 5454694, 5457253, 5459560, 5462636, 5466732, 5470830, 5475433, 5478765, 5483119, 5487974, 5490532, 5492584, 5495655, 5498469, 5500775, 5503592, 5506692, 5508932, 5510725, 5512774, 5515109, 5517424, 5522545, 5527908, 5529956, 5531973, 5534022, 5536356, 5538373, 5540422, 5542724, 5544517, 5546563, 5548133, 5550406, 5552741, 5555046, 5557635, 5559621, 5561670, 5564005, 5566309, 5568613, 5570918, 5573480, 5576550, 5579109, 5581381, 5583426, 5584707, 5586245, 5588356, 5590631, 5593451, 5597293, 5601646, 5606245, 5608516, 5610309, 5612359, 5614954, 5618534, 5621096, 5624166, 5626693, 5628773, 5631108, 5633381, 5635654, 5637988, 5640037, 5642341, 5644611, 5646148, 5647975, 5650788, 5652836, 5654885, 5657189, 5659494, 5662026, 5665352, 5668202, 5671750, 5674053, 5676137, 5679460, 5681478, 5683784, 5686732, 5691597, 5696716, 5701581, 5706568, 5709423, 5714288, 5719363, 5720933, 5723235, 5725030, 5727589, 5729894, 5732390, 5734436, 5736067, 5738085, 5740485, 5743557, 5746564, 5748837, 5751141, 5753476, 5755846, 5759174, 5762502, 5765830, 5769063, 5771845, 5773926, 5776485, 5778790, 5781350, 5783939, 5785988, 5788258, 5789794, 5791334, 5793924, 5796196, 5798245, 5800548, 5802597, 5804931, 5806949, 5809253, 5811522, 5812837, 5815141, 5817444, 5819492, 5821541, 5823876, 5826150, 5828710, 5831269, 5833573, 5835908, 5838182, 5840742, 5843301, 5845604, 5847654, 5850181, 5852230, 5854532, 5856325, 5858371, 5859906, 5861187, 5862787, 5864772, 5866628, 5868932, 5871172, 5872963, 5874500, 5876294, 5878598, 5880899, 5882436, 5884262, 5886788, 5888643, 5890628, 5892455, 5895300, 5897604, 5899875, 5901668, }; static uint32_t digit(const unsigned char* text, uint32_t len, uint32_t i, bool hex); /* text[at] is '&' and text[at+1] is '#'. Returns the index after what was consumed. */ static uint32_t numeric_ref(const unsigned char* text, uint32_t len, uint32_t at) { uint32_t i = at + 2; bool hex = false; if (i < len && (text[i] == 'x' || text[i] == 'X')) { hex = true; i += 1; } uint32_t first = digit(text, len, i, hex); if (first == 0xFFFFFFFFu) { emit_byte('&'); return at + 1; } uint32_t value = first; uint32_t mult = hex ? 16 : 10; i += 1; while (i < len) { uint32_t d = digit(text, len, i, hex); if (d == 0xFFFFFFFFu) break; /* Saturate: anything past U+10FFFF becomes U+FFFD the same way. */ value = value * mult + d; if (value > 0x110000u) value = 0x110000u; i += 1; } if (i < len && text[i] == ';') i += 1; uint32_t v = value; if (v >= 0x80 && v <= 0x9F && c1[v - 0x80] != 0) v = c1[v - 0x80]; if (v == 0 || (v >= 0xD800 && v <= 0xDFFF) || v > 0x10FFFF) v = 0xFFFD; emit_code_point(v); return i; } static uint32_t digit(const unsigned char* text, uint32_t len, uint32_t i, bool hex) { if (i >= len) return 0xFFFFFFFFu; uint8_t c = text[i]; if (c >= '0' && c <= '9') return c - '0'; if (hex && c >= 'a' && c <= 'f') return c - 'a' + 10; if (hex && c >= 'A' && c <= 'F') return c - 'A' + 10; return 0xFFFFFFFFu; } /* Binary search over the sorted table; writes the value to out and returns its length. */ static uint32_t lookup(const unsigned char* key, uint32_t key_len, const unsigned char** out) { uint32_t lo = 0, hi = TABLE_ENTRIES; while (lo < hi) { uint32_t mid = lo + (hi - lo) / 2; uint32_t e = table_entries[mid]; uint32_t off = e >> 8; uint32_t nl = (e & 0x1F) + 1; uint32_t vl = (e >> 5) & 7; int cmp = 0; uint32_t n = nl < key_len ? nl : key_len; for (uint32_t k = 0; k < n; k++) { if (table_blob[off + k] != key[k]) { cmp = table_blob[off + k] < key[k] ? -1 : 1; break; } } if (cmp == 0) { if (nl != key_len) cmp = nl < key_len ? -1 : 1; else { *out = &table_blob[off + nl]; return vl; } } if (cmp < 0) lo = mid + 1; else hi = mid; } return 0; } /* text[at] is '&' and the next byte is a name character. */ static uint32_t named_ref(const unsigned char* text, uint32_t len, uint32_t at) { uint32_t end = at + 1; while (end < len && end - (at + 1) < 32 && name_char(text[end])) end += 1; if (end < len && text[end] == ';') end += 1; const unsigned char* name = text + at + 1; uint32_t name_len = end - (at + 1); const unsigned char* value; uint32_t vl = lookup(name, name_len, &value); if (vl) { emit(value, vl); return end; } /* Longest table-key prefix wins; the rest (possibly including ';') is copied. */ for (uint32_t x = name_len - 1; x >= 2; x -= 1) { vl = lookup(name, x, &value); if (vl) { emit(value, vl); emit(name + x, name_len - x); return end; } } emit_byte('&'); return at + 1; } /* text[at] is '&'. Returns the index after what was consumed. */ static uint32_t handle_ref(const unsigned char* text, uint32_t len, uint32_t at) { if (at + 1 >= len) { emit_byte('&'); return at + 1; } uint8_t c = text[at + 1]; if (c == '#') return numeric_ref(text, len, at); if (name_char(c)) return named_ref(text, len, at); emit_byte('&'); return at + 1; } extern "C" uint64_t render(uint32_t len) { if (len > INPUT_CAP) len = INPUT_CAP; const unsigned char* text = buffer + GAP; out_len = 0; uint32_t i = 0; while (i < len) { if (text[i] != '&') { buffer[out_len++] = text[i]; i += 1; } else { i = handle_ref(text, len, i); } } return ((uint64_t)(uint32_t)buffer << 32) | out_len; }